6

我正在开发一个需要通过 OAuth2 从第 3 方网络服务(第 3 方意味着它不是 Google,我不拥有它)获得授权的应用程序。

本文:

http://developer.android.com/training/id-auth/authenticate.html

似乎建议我应该为此目的使用 AccountManager。在考虑了这一点之后,我对这样做的好处有些怀疑,或者即使我这样做是否合适。如果我想使用 Google 帐户,或者其他一些应用程序已经安装到 AccountManager 中的其他帐户,那么显然从 AccountManager 获取凭据是个好主意。但是由于我将使用一个很可能不在 AccountManager 中的帐户,所以我必须完成所有工作才能安装它。

AccountManager 在实际处理 OAuth2 请求时是否提供任何支持?如果没有,那么我通过使用它可以获得什么?

而且由于我不拥有与此帐户类型关联的 Web 服务,我是否适合将此类帐户安装到 AccountManager 中?

谢谢!

4

1 回答 1

2

在这四年之后,这可能是一个相当晚的答案,但让我给你一个简短的答复。

您不能也不应该自己为 Oauth 安装第三方帐户。实现 AccountManager 功能并创建自己的帐户类型是那些第三方 OAuth 提供者(例如 Facebook 或 Twitter)的工作。这大致在https://developer.android.com/training/id-auth/custom_auth.html得到指导。

有几个服务,包括 OAuth 提供者,如 Facebook、Twitter、WeChat 等,他们在 AccountManager 中注册用户帐户,但我相信他们中的大多数只是使用它来实现 SyncAdapter(需要 Account),而不是向第三方提供 OAuth 功能- 派对应用程序,例如您的应用程序。

我认为 Google 允许您使用通过 AccountManager 获得的令牌来使用他们的 API;您提供的链接提供了使用 AccountManager for Tasks API 的示例。但是,使用客户端库是实现与https://developers.google.com/google-apps/tasks/quickstart/java#step_3_configure_the_project_build中所述相同的事情的更好选择。

如果第三方 OAuth 提供商没有为您提供任何 SDK 或客户端库,您别无选择,只能使用他们提供的 REST API。

于 2017-10-13T07:49:20.470 回答