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

Openid 从谷歌应用同步用户并处理登录,openid,oauth-2.0,sync,google-apps,Openid,Oauth 2.0,Sync,Google Apps,我已经四处寻找了一段时间,但我自己也没能弄明白这一点。实际上,我在谷歌api文档中感到非常困惑和迷茫:-) 我需要做两件事 从google apps帐户同步用户并将其存储在我自己的数据库中 如果已经同步到db,则允许用户使用其google apps帐户登录 我使用contacts api和oauth2使用gdata python库成功地实现了这一点。但问题是,为了让它工作,需要在GoogleAPI控制台(重定向url,js源代码)中配置很多内容。这与最简单的方法不同,因为用户/客户机必须自己完成

我已经四处寻找了一段时间,但我自己也没能弄明白这一点。实际上,我在谷歌api文档中感到非常困惑和迷茫:-)

我需要做两件事

  • 从google apps帐户同步用户并将其存储在我自己的数据库中
  • 如果已经同步到db,则允许用户使用其google apps帐户登录
  • 我使用contacts api和oauth2使用gdata python库成功地实现了这一点。但问题是,为了让它工作,需要在GoogleAPI控制台(重定向url,js源代码)中配置很多内容。这与最简单的方法不同,因为用户/客户机必须自己完成这项工作。其他网站如何解决谷歌应用程序登录问题?我也一直在研究openid,但我不确定(1)可以用这个来解决

    有谁曾经这样做过,并且知道哪种方法更可取,或者有什么建议


    谢谢

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

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

    同步用户应该使用,而不是联系人API

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

    如果它是一个已安装的应用程序(在您的服务器上)——那么只要您只需要只读访问就可以将用户从谷歌应用程序抓取到另一个系统,这相当简单

    域管理员需要执行的操作:

    1) 访问:

    授予与(您的域名)相同的客户端名称对作用域的访问权限:

    https://apps-apis.google.com/a/feeds/user/#readonly 
    
    2) 获取您的域使用者密钥/机密,并确保其已启用。从这里抓取:

    https://www.google.com/a/cpanel/(YOUR DOMAIN NAME)/SetupOAuth
    
    开发人员需要做的事情:

    然后,您需要使用两条腿的OAuth 1.0,并使用该使用者密钥和密码进行访问。您可以使用。在操场上,不要触摸第1节和第3节中的任何东西。只需使用第2节选择HMAC#U SHA1作为签名方法,并在这些字段中提供您的密钥(即域名)和密码。在第6节中,指定要请求的URL,该URL将是:

    https://apps-apis.google.com/a/feeds/(YOUR DOMAIN NAME)/user/2.0
    
    然后点击执行。请注意,OAuth 1.0游乐场未托管在启用SSL的URL上,因此您可能希望在测试域上执行此操作,并在测试后重置域机密

    如果给出适当的说明,域管理员应该很容易遵循步骤1和步骤2。使之更容易的唯一方法是在主机上托管应用程序。这为应用程序提供了单个密钥/机密,管理员安装应用程序并授予权限足以授予应用程序的密钥/机密访问安装域数据的权限。他们不必手动完成第1步和第2步

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

    允许用户使用其应用程序帐户登录:

    使用OAuth 2.0进行登录(基于OpenID Connect):


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

    太好了,谢谢您的详细解释。我需要同步用户,因为它是一个项目管理工具。在登录之前,它们需要可用于计划。同步用户变得非常简单,使用gdata只需几行代码。
    https://apps-apis.google.com/a/feeds/(YOUR DOMAIN NAME)/user/2.0