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

标签 android oauth accountmanager

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

本文:

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

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

AccountManager 在实际处理 OAuth2 请求方面是否提供任何支持?如果没有,那么我使用它有什么好处?

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

谢谢!

最佳答案

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

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

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

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

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

关于android - 使用 Android AccountManager 进行第三方 OAuth2 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16270904/

相关文章:

android - 程序强制关闭

android - 从 Flutter 打开 Android Activity 和 iOS ViewController

javascript - 如何在 Deno js 中使用 Google OAuth?

使用 AWS Cognito、Google+ OAuth 和 AccountManager 的 Android 应用程序

android - OutOfMemory 错误,但有可用内存

android - 为什么 DAO 必须是接口(interface)或抽象类?

android - 如何在 Twitter 上拥有桌面和移动应用程序

spring - 无法将参数放入 REST 服务中 OAuth2 POST 请求的正文中

android - 如何将一个帐户用于多个应用程序(AccountAuthenticator、sharedUserId、Google Play App Signing)?

android - 是否可以以编程方式添加和配置交换帐户