7

如果您有一个需要用户注册的 Android 应用程序,并且您希望允许您的用户通过 Google 登录,您将如何处理?

我想让 Google+ 登录不参与此处的讨论。我们也没有使用用户凭据来访问 Google API,我对额外访问 Google+ 的社交功能不感兴趣。

似乎有很多选择:

使用 OAuth2.0 进行认证

记录在Google OAUth2 登录页面中

这并没有真正提到 Android,但它(部分)基于 OAuth2 访问令牌,但更重要的是基于 JSON Web 令牌 id_token 的验证。

这种对用户进行身份验证的方式还涉及启动 WebView 以允许用户登录到他们的 google 帐户以及对 id_token 进行相当复杂的验证。

使用 OAuth2 / Google Play 服务

Google Play Services 中有一个更侧重于授权的示例。它使用 GoogleAuthUtil.getToken 来检索 access_token。其中一部分肯定是身份验证,因为对话框指出“登录到...”。

在此处输入图像描述

我是否正确地认为使用带有 access_token 的 OAuth2.0 流作为身份验证机制是一种不好的做法?(将访问令牌存储为身份验证令牌)。

支持 Facebook / Twitter 登录

我问的原因是因为 Twitter 和 Facebook 建议您实施“使用 ... 登录”身份验证过程的方式

这似乎也完全基于 OAuth 访问令牌。

我不知道的任何其他选项允许您使用他们的谷歌帐户对用户进行身份验证?

4

2 回答 2

4

你需要的是这个 http://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html

即获取一个 ID 令牌并使用它登录到您的应用程序的后端。

你说的对。一般来说,使用访问令牌进行身份验证是个坏主意。我们已经进行了多次演示以提醒开发人员注意它。 https://docs.google.com/presentation/d/1klTZheiQIhcty6MKvTYS12cw1Vyn4T1R4d60QCRYM60/edit?usp=drive_web

如果没有其他选项并且只有一个访问令牌,您可以进行一些额外的验证以使用它来登录并缓解潜在的安全问题。在 OpenIDCOnnect 中设计 ID Token 是有原因的,那就是用于身份验证。

于 2013-07-19T08:14:16.810 回答
2

推荐的方式是使用新的 Google+ 登录: https ://developers.google.com/+/mobile/android/sign-in

于 2013-07-13T11:35:50.923 回答