简而言之,使用OAuth2请求getAuthToken和getToken有什么不同

时间:2013-01-16 18:28:31

标签: android google-app-engine authorization accountmanager

使用访问令牌OAuth 2.0进行申请时 简而言之,与使用有什么区别:

AccountManager.getAuthToken ("oauth2:https...userinfo.profile")

并使用Google Play:

GoogleAuthUtil.getToken(mActivity, mEmail, mScope)

当我understand时,它们都会为用户生成challenge屏幕, Google Plays屏幕用户更友好。访问令牌可以具有相同的范围吗?! 两个调用都必须是异步的。 InvalidateToken似乎必须在两个调用中检查,还有更多吗?

enter image description here enter image description here

1 个答案:

答案 0 :(得分:23)

我不知道如何使用Google Play服务进行OAuth 2.0身份验证,但在快速浏览一下后,它看起来非常有趣,我认为这是我更喜欢使用AccountManager.getAuthToken。

主要差异

<强> AccountManager.getAuthToken

<强>临

  • 可用于所有Android 2.0设备及更新版本。
  • 内置于Android,不需要任何单独的SDK。
  • 可用于所有具有身份验证器的帐户,而不仅仅是Google。

<强>缺点:

  • 返回可能已过期的令牌,因此您必须始终invalidate the token并再次请求它以确保您拥有有效令牌。
  • 需要权限GET_ACCOUNTS和USE_CREDENTIALS。
  • 挑战屏幕对Android 2不友好。*

<强> GoogleAuthUtil.getToken

<强>临

<强>缺点:

  • 需要Android 2.2并且该设备具有Google Play
  • 要求您下载并在应用中加入Google Play services SDK
  • 您需要在Google API控制台中register your app
  • 可以“仅”用于使用OAuth 2.0的Google服务

挑战屏幕比较

AccountManager.getAuthToken姜饼和冰淇淋三明治挑战赛

getAuthToken challenge screen for Gingerbread getAuthToken challenge screen for Ice cream sandwich

GoogleAuthUtil.getToken挑战赛

getToken challenge screen getToken challenge screen, more details

摘要

由于GoogleAuthUtil方法具有更加用户友好的挑战屏幕,并且在安装时需要较少的权限,因此我肯定会使用此方法而不是AccountManager.getAuthToken方法。因为你总是得到一个有效的令牌而不必为使令牌无效而烦恼,所以它也应该使代码更简单。