0

我已经四处寻找了一段时间,但我自己无法弄清楚这一点。实际上,我对 google api 文档感到非常困惑和迷失 :-)

我需要做两件事。

  1. 从谷歌应用程序帐户同步用户并存储在我自己的数据库中。
  2. 如果已经同步到数据库,让用户使用他们的 google 应用程序帐户登录。

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

任何曾经这样做过并知道首选哪种方法或有任何建议的人?

谢谢!

4

1 回答 1

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-legged 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 Playground 并非托管在启用 SSL 的 URL 上——因此您可能希望在尝试时在测试域上执行此操作,并在测试后重置域密码。

如果给出适当的说明,步骤 #1 和 #2 对于域管理员来说应该很容易遵循。使其更容易的唯一方法是在Google Apps Marketplace上托管应用程序。这为应用程序提供了一个密钥/秘密,安装应用程序并授予权限的管理员足以授予应用程序密钥/秘密访问安装域数据的访问权限。他们不必手动执行步骤#1 和#2。

注意:如果您正在构建的 Web 应用程序需要管理员授予对其域用户列表的访问权限,或者需要对配置 API 的写入权限,则域客户端/密钥将不起作用。您需要使用其他授权机制之一。您的应用程序需要在 API 控制台中设置客户端 ID/客户端密码——但您不需要让每个用户都这样做。

让用户使用他们的应用程序帐户登录:

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

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

于 2012-09-09T00:28:11.873 回答