使用Android AccountManager进行第三方OAuth2授权

时间:2013-04-29 03:46:48

标签: android oauth accountmanager

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

这篇文章:

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

似乎暗示我应该使用AccountManager来实现此目的。在给出这个想法后,我对这样做的好处有疑问,或者即使我这样做也是合适的。如果我想使用某个其他应用已经安装到AccountManager中的Google帐户或其他帐户,那么显然从AccountManager获取凭据是个好主意。但是,由于我将使用很可能不在AccountManager中的帐户,因此我必须完成所有工作才能安装它。

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

由于我不拥有与此帐户类型相关联的网络服务,我是否适合在AccountManager中安装此类帐户?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

有一些服务,包括OAuth提供商,如Facebook,Twitter,微信等,他们在AccountManager中注册用户帐户,但我相信他们中的大多数只是使用它来实现SyncAdapter(需要帐户),而不是提供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之外别无选择。