8

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

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

并使用 Google Play:

GoogleAuthUtil.getToken(mActivity, mEmail, mScope)

据我了解,它们都为用户生成了一个挑战屏幕,Google Plays 屏幕对用户更友好。访问令牌可以具有相同的范围对吗?!两个调用都必须是异步的。InvalidateToken 看起来必须在两个调用中都进行检查,等等?

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

4

1 回答 1

24

我不知道使用 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挑战屏幕

Gingerbread 的 getAuthToken 挑战屏幕 冰淇淋三明治的 getAuthToken 挑战屏幕

GoogleAuthUtil.getToken挑战屏幕

getToken 挑战屏幕 getToken 挑战屏幕,更多详情

概括

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

于 2013-01-17T08:06:21.607 回答