使用Google+信息流登录

时间:2014-03-12 18:32:25

标签: javascript google-plus

我试图围绕G +登录流程,但我不确定我是否做得对。

我主要关注this page

在该流程中,我可以连接到我自己的数据库并获取用户名和权限等内容,以及我应该将哪些内容存储为数据库中的标识符(以便在下次登录时快速识别它们)?我应该与G + API交谈并获取他们的G + ID然后存储它(以及我想存储的关于用户的数据)吗?

第二次登录时流量会如何显示? 我需要的东西最终会给我G + ID(如果我用的话),这样我就可以在我的DB中找到它们。

1 个答案:

答案 0 :(得分:3)

使用Google+ API调用的最快捷方式是the Google+ Quickstarts。这些示例将为您提供准备好复制并粘贴到应用程序中的代码。我将很快讨论应用程序中演示的流程。

与OAuth 2.0一样,目标是获取承载令牌(OAuth 2.0中的访问令牌)以授权API调用。可以通过多种方式检索令牌,但使用Google+登录按钮登录最重要的是代码交换。

用户第一次遇到您的网站(让我们称之为注册),流程将是代码交换。代码交换模式是:

  1. 用户访问您的网站
  2. 用户点击首选授权(Google+登录)
  3. 向用户显示同意/授权屏幕
  4. 代码从JavaScript返回到Web客户端
  5. Web客户端(HTML / JavaScript)将授权代码传递给您的服务器
  6. 服务器交换代码以获取刷新和访问令牌,然后缓存这些令牌
  7. 此时,您的服务器具有访问令牌。这意味着您可以根据授予您应用的用户权限向Google发出API调用(例如,plus.people.get('我'),它会获取已登录用户的个人资料)。

    现在应该授权用户使用您的服务器,并且应该根据用户的会话等进行身份验证。但是,现在您遇到了一个新问题,当用户再次从新浏览器访问您的站点或者破坏其会话时会发生什么?

    这是转换到下一个重要流程的好时机:身份验证(让我们称之为“登录”)流程。对于登录,您应该让客户端向您的服务器传递身份验证凭据(同样是承载令牌),然后在为数据库中的用户建立新会话之前验证凭据。

    verify token examples on the Google+ Github page演示了发送和验证ID令牌的简明代码。

    让我们讨论一种传递一种承载令牌ID令牌进行身份验证的方法的细节。

    1. 用户登录您的网站
    2. Google+登录按钮会在回调中返回ID令牌
    3. 客户端安全地将ID令牌传递给服务器
    4. 服务器验证ID令牌*
    5. 然后验证客户端会话
    6. *的步骤最好放在另一个问题中,但是一组典型的测试包括:

      1. 验证令牌的证书是Google的
      2. 验证客户端ID是否适用于此应用
      3. 验证用户是否在您的网站上拥有帐户(可选,如果您需要离线访问,请执行此操作)
      4. 验证令牌是否已过期
      5. 希望能为两者解决问题。

        您应该了解一个最终流程,用于脱机API访问,令牌刷新。当您具有刷新令牌和过期的访问令牌时,将发生令牌刷新。对于Google的OAuth 2.0实施,访问令牌将在3600秒(1小时)后过期。由于这些令牌过期,因此当您存储的访问令牌过期时,您需要能够获得新的访问令牌。为此,您将三位传递给Google:

        1. 刷新令牌(从代码交换中检索)
        2. 客户ID(从Google developer console检索)
        3. 客户端密码(再次,从Google developer console检索到)
        4. 这些部分将传递到Google OAuth服务器,然后服务器将返回一个可用于脱机API访问的新访问令牌。

          有关此主题的大量信息,另请参阅: