通过Android应用安全地将Google Plus登录到Web应用程序中

Nat*_*ett 4 android google-plus

我正在开发Android应用,我希望用户使用Google+登录登录我的应用.

目前,我在PHP登录脚本中传递了我从Google+获得的用户名.该脚本使用用户的ID加载新会话.

目前,该网站非常不安全:知道其他用户的用户名的任何人都可能以其身份登录.

有什么安全的方法可以做到这一点?

如何针对我的服务器授权用户?

对我来说,Google +纯粹是一个社交网络API ......

Lee*_*Lee 18

Google+登录使用OAuth 2.0 - 这意味着用户不会直接对您的服务器进行身份验证.相反,他们会通过Google身份验证并获取由Google签名的令牌.您的应用获取该令牌(来自Android上的Google Play服务),并可将其传递给您的服务器,作为用户通过Google验证的证明.然后,您可以将用户Google+ ID与您自己服务器上的新用户ID或现有用户ID相关联.因此,只要用户可以证明他们通过Google对特定的Google+用户ID进行了身份验证,您就可以将其视为在您自己的服务器上进行身份验证.

要实现,您可以根据架构系统的方式选择一些选项:

  1. 当您只想向自己的服务器验证用户身份时:在Android设备上,您的用户通常已经过Google验证,因为他们在客户经理中拥有Google帐户.您的应用可以利用此功能,并在帐户管理器中为用户获取令牌,而无需键入任何密码.用户在您的应用中点击"使用Google登录"后,您可以使用GoogleAuthUtils.getToken()它获取ID令牌并将其传递给您的服务器.验证Google签名后,您的服务器可以安全地将用户会话与相应的用户帐户和权限相关联(即将会话视为已通过身份验证).Tim Bray在这里Ian Barber在这里讨论了获取令牌并验证令牌的过程.
  2. 如果您要向自己的服务器验证用户身份并通过服务器进行Google+ API调用:那么您应该查看developers.google.com 上的服务器端流程文档.这采用与选项一相同的方法,但此外,当用户第一次登录时,Android应用程序请求授权代码而不是ID令牌.这可以由服务器交换访问令牌和刷新令牌 - 服务器可以使用它来代表用户进行API调用,例如,使用PHP客户端库.
  3. 如果您要向自己的服务器验证用户身份,还要通过Android设备拨打Google API电话:那么您应该使用 Google Play服务提供的PlusClient进行Google API调用以及您对用户进行身份验证所采取的步骤用你自己的服务器.

您可能希望在客户端或服务器上进行Google API调用,以便您可以使用用户Google+个人资料中的数据预先填充注册表单.