允许用户使用Google凭据访问您的应用的最佳方式

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

我想让Google+login脱离这里的讨论。 我们也没有使用用户凭据来访问Google API,我也不想额外访问Google+的社交function。

似乎有很多select:

使用OAuth2.0进行身份validation

logging在Google OAUth2login页面

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

这种对用户进行身份validation的方式还包括启动WebView以允许用户login到他们的Google帐户以及相当复杂的id_tokenvalidation。

使用OAuth2 / Google Play服务

Google Play服务中有一个示例,更多地关注授权。 它使用GoogleAuthUtil.getToken来检索access_token。 其中的一部分是肯定的authentication,因为对话状态“login到…”。

在这里输入图像说明

我是否正确地认为将OAuth2.0stream与access_token用作authentication机制是一种不好的做法? (将访问令牌存储为authentication令牌)。

支持Facebook / Twitterlogin

我问的原因是因为Twitter和Facebook推荐你实施“使用…login”身份validation过程

  • 用Twitter实现login
  • Facebookloginstream为Android

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

我没有意识到的任何其他选项允许您用他们的谷歌帐户authentication用户?

Solutions Collecting From Web of "允许用户使用Google凭据访问您的应用的最佳方式"

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

即获得一个ID令牌,并使用它login到您的应用程序的后端。

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

如果没有其他选项,而且只有一个访问令牌,则可以进行一些额外的validation,以便使用它来login并减轻潜在的安全问题。 在OpenIDCOnnect中deviseID Token是有原因的,那就是用于身份validation。

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