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

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

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

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

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

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

对我来说,谷歌纯粹是一个社交网络API ……

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

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

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

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

转载注明原文:通过Android应用安全地将Google Plus登录到Web应用程序中 - 代码日志