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

Eri*_*rik 8 google-app-engine android authorization accountmanager

使用访问令牌OAuth 2.0进行处理时简而言之,使用以下内容有何不同:

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

并使用Google Play:

GoogleAuthUtil.getToken(mActivity, mEmail, mScope)
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它们都为用户生成了挑战屏幕,Google Plays屏幕对用户更友好.访问令牌可以具有相同的范围吗?!两个调用都必须是异步的.InvalidateToken似乎必须在两个调用中检查,还有更多?

在此输入图像描述 在此输入图像描述

nib*_*ius 23

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

主要差异

AccountManager.getAuthToken

优点:

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

缺点:

  • 返回可能已过期的令牌,因此您始终必须使令牌无效并再次请求令牌以确保您具有有效令牌.
  • 需要权限GET_ACCOUNTS和USE_CREDENTIALS.
  • 挑战屏幕对于Android 2不是用户友好的.*

GoogleAuthUtil.getToken

优点:

缺点:

  • 需要Android 2.2并且该设备具有Google Play
  • 要求您在应用中下载并添加Google Play服务SDK.
  • 您需要在Google API控制台中注册您的应用
  • 可以"仅"用于使用OAuth 2.0的Google服务

挑战屏幕比较

在姜饼和冰淇淋三明治上的AccountManager.getAuthToken挑战屏幕

姜饼的getAuthToken挑战屏幕 针对冰淇淋三明治的getAuthToken挑战屏幕

GoogleAuthUtil.getToken挑战屏幕

getToken挑战屏幕 getToken挑战屏幕,更多细节

摘要

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

  • nibarius没错.如果可能的话,采用GoogleAuthUtil方法,那就是我们投入所有工作的地方. (2认同)