从谷歌应用程序同步用户并处理登录

时间:2012-09-06 15:24:16

标签: openid oauth-2.0 sync google-apps

我一直在寻找一段时间,但我自己也无法解决这个问题。实际上我觉得我很困惑并迷失在google api文档中: - )

我需要做两件事。

  1. 从Google Apps帐户同步用户并存储在我自己的数据库中。
  2. 如果已经同步到db。
  3. ,请让用户使用他们的Google Apps帐户登录

    我设法使用gdata python库使用contacts api和oauth2来工作。但问题是需要在google api控制台(重定向url,js origin)中配置很多才能使其正常工作。它只是不是最简单的方法,因为用户/客户必须由他/她自己做这件事。其他网站如何解决谷歌应用登录?我也一直在看openid,但我不确定(1)是否可以用这个解决。

    之前已经完成此操作且知道哪种方法更受欢迎或有任何建议的人?

    谢谢!

1 个答案:

答案 0 :(得分:1)

为什么需要预先同步用户列表?为什么不允许用户登录,并根据用户登录动态创建数据库中的用户?

如果您确实需要同步用户:

应该使用Google Apps Provisioning API而不是Contacts API来同步用户。

您是在构建已安装的应用程序(在您的服务器上),还是允许多个站点的域管理员访问并授予访问权限的Web应用程序?

如果它是已安装的应用程序(在您的服务器上) - 那么只要您只需要只读访问权限就可以将用户从Google Apps抓到另一个系统,这很简单。

域名管理员需要执行以下操作:

1)访问:

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

授予与范围相同的客户名称(YOUR DOMAIN NAME)的访问权限:

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

2)抓住您的域用户密钥/密钥,并确保已启用。抓住这里:

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

开发人员需要这样做:

然后,您需要使用具有该使用者密钥和密码的2脚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 /客户端密钥 - 但您不需要让每个用户都这样做。

让用户使用自己的应用帐户登录:

使用OAuth 2.0进行登录(基于OpenID Connect): https://developers.google.com/accounts/docs/OAuth2Login

您必须在API控制台中设置应用程序的客户端信息,但这只是一次 - 不需要为每个域或类似的任何域进行。