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

6

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

本文:

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

似乎建议我应该使用AccountManager来实现这个目的。经过一番思考,我对这样做的好处有些怀疑,甚至是否适合我这样做也存有疑虑。如果我想要使用Google账号或者其他已经被其他应用程序安装到AccountManager中的账号,那么从AccountManager获取凭证显然是一个好主意。但由于我将使用的帐户很可能不在AccountManager中,所以我必须完成所有工作才能将其安装。

AccountManager在处理OAuth2请求方面提供任何支持吗?如果没有,那么使用它会带来什么好处?

而且,既然我不拥有与此帐户类型相关联的Web服务,那么将这些帐户安装到AccountManager中是否合适?

谢谢!

1个回答

2
这可能是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进行任务API的示例。然而,使用客户端库是实现同样功能的更好选择,如https://developers.google.com/google-apps/tasks/quickstart/java#step_3_configure_the_project_build所述。
如果第三方OAuth提供者没有提供任何SDK或客户端库,那么你唯一的选择就是使用他们提供的REST API。

2
虽然您的回答晚了四年,但对于像我这样处于与原帖作者相同情况下并且在谷歌上找不到答案(是通过AccountManager API还是自己进行OAuth2等)的人来说,它立即变得非常有用。感谢您的回答。 - Adrian Romanelli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接