2012-09-06 36 views
0

我一直在尋找一段時間,我無法自己弄清楚這一點。其實我感到非常困惑並迷失在google api文檔中:-)從谷歌應用同步用戶並處理登錄

我需要做兩件事。

  1. 從谷歌應用程序帳戶同步用戶並存儲在我自己的數據庫中。
  2. 讓用戶使用他們的谷歌應用帳戶登錄,如果已經同步到數據庫。

我設法使用gdata python庫使用聯繫人api和oauth2來工作。但問題是有很多需要在谷歌的API控制檯(重定向url,js起源)配置這個工作。由於用戶/客戶不得不由他/她自己做這件事,因此它不會像最簡單的方式那樣縫合。其他網站如何解決谷歌應用登錄?我也一直在看openid,但我不確定(1)可以用這個來解決。

任何已經完成此操作並知道哪種方法是首選或有任何建議的人?

謝謝!

回答

1

爲什麼需要預先同步用戶列表?爲什麼不只允許用戶登錄,並根據哪些用戶登錄,在數據庫中動態創建用戶?

如果你真的需要同步用戶:

正在同步的用戶應與Google Apps Provisioning API來完成,而不是聯繫人API。

您是在建立一個已安裝的應用程序(在您的服務器上的某處),還是一個允許多個站點的域管理員訪問和授予訪問權限的Web應用程序?

如果它是已安裝的應用程序(在您的服務器上) - 那麼只要只需要只讀訪問權限即可將用戶從Google Apps抓到另一個系統,這非常簡單。

域管理員需要做的:

1)訪問:

https://www.google.com/a/cpanel/(YOUR DOMAIN NAME)/ManageOauthClients 

爲客戶名稱授予訪問這是一樣的(你的域名)的範圍:

https://apps-apis.google.com/a/feeds/user/#readonly 

2)抓住你的域用戶密鑰/祕密,並確保它已啓用。從這裏搶:

https://www.google.com/a/cpanel/(YOUR DOMAIN NAME)/SetupOAuth 

開發者需要做的:

然後,您需要使用兩方模式OAuth 1.0,消費者密鑰和祕密訪問。您可以使用OAuth 1.0 playground進行試用。在操場上,請勿觸摸#1和#3部分的任何物品。只需使用第2節來選擇HMAC_SHA1作爲簽名方法,並在這些字段中提供您的密鑰(這是域名)並保密。在第6號,指定你要請求的URL,這將是:

https://apps-apis.google.com/a/feeds/(YOUR DOMAIN NAME)/user/2.0 

和命中執行。請注意,OAuth 1.0遊樂場不在啓用SSL的URL上託管 - 因此您可能希望在嘗試使用時在測試域上執行此操作,並在測試後重置域密鑰。

如果給出適當的指示,則步驟#1和#2對於域管理員來說應該相當容易。讓它更容易的唯一方法是在Google Apps Marketplace上託管一個應用程序。這爲應用程序提供了單個密鑰/祕密,管理員安裝應用程序並授予權限足以授予訪問安全域數據的應用程序密鑰/祕密的訪問權限。他們不必手動執行步驟#1和#2。

注意:如果你正在建設一個Web應用程序將要求他們的域用戶列表的管理員授予訪問權限,或者需要寫訪問配置API,域客戶端/祕密將無法正常工作。您需要使用other authorization mechanisms之一。您的應用程序需要在API控制檯中設置客戶端ID /客戶端密鑰 - 但您不需要讓每個用戶都這樣做。

讓用戶登錄他們的Apps帳戶:

使用OAuth 2.0登錄(這是ID連接爲基礎): https://developers.google.com/accounts/docs/OAuth2Login

你必須在安裝應用程序的客戶端信息API控制檯,但這只是一次 - 它不需要爲每個域或類似的東西做。

+0

太好了,非常感謝你的詳細解釋。我需要同步用戶,因爲它是一個項目管理工具。他們需要在登錄前可用於調度。同步用戶非常簡單,只需幾行代碼就可以使用gdata。 –