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

2023-12-31

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

本文:

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

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

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

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

谢谢你!


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

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

有多种服务,包括 Facebook、Twitter、微信等 OAuth 提供商,他们在 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 https://developers.google.com/google-apps/tasks/quickstart/java#step_3_configure_the_project_build.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Android AccountManager 进行第三方 OAuth2 授权 的相关文章

  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • CollapsingToolBarLayout - 状态栏稀松布颜色不改变

    几天前我更新了我的 android studio 并开始使用 CoordinatorLayout 和 CollapsingToolbarLayout 只是尝试一些东西 工具栏稀松布颜色似乎覆盖了状态栏初始颜色和状态栏稀松布颜色 从 xml
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • Android Studio 0.4.3 Eclipse项目没有gradle

    在此版本之前 在 Android Studio 中按原样打开 Eclipse 项目似乎很容易 无需任何转换 我更喜欢 Android Studio 环境 但我正在开发一个使用 eclipse 作为主要 IDE 的项目 我不想只为这个项目下载
  • 字符串数组文本格式化

    我有这个字符串 String text Address 1 Street nr 45 Address 2 Street nr 67 Address 3 Street nr 56 n Phone number 000000000 稍后将被使用
  • Android访问远程SQL数据库

    我可以直接从 Android 程序访问远程 SQL 数据库 在网络服务器上 吗 即简单地打开包含所有必需参数的连接 然后执行 SQL 查询 这是一个私人程序 不对公众开放 仅在指定的手机上可用 因此我不担心第三方获得数据库访问权限 如果是这
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • 在activity_main.xml中注释

    我是安卓新手 据我所知 XML 中的注释与 HTML 中的注释相同 使用 形式 我想在 Android 项目的 Activity main xml 配置文件中写一些注释 但它给了我错误 值得注意的是 我使用的是 Eclipse 但目前 我直
  • 如何确定对手机号码的呼叫是本地呼叫还是 STD 或 ISD

    我正在为 Android 开发某种应用程序 但不知道如何获取被叫号码是本地或 STD 的号码的数据 即手机号码检查器等应用程序从哪里获取数据 注意 我说的是手机号码 而不是固定电话 固定电话号码 你得到的数字是字符串类型 因此 您可以获取号

随机推荐

  • 使用调查权重时如何为 Logit 模型生成边际效应?

    我通常使用 mfx 包和 logitmfx 函数生成 logit 模型边际效应 然而 我当前使用的调查具有权重 由于某些人群中的过度采样 这对样本中 DV 的比例有很大影响 而 logitmfx 似乎没有任何方法包含权重 我已经用 svyg
  • PhantomJs 脚本中的 Ajax 请求

    Problem phantomJs 脚本中对本地页面的 Ajax 请求不起作用 无响应 问题 我怎样才能让它发挥作用 有什么想法或可能的解决方案吗 描述 我正在运行 phantomJs 脚本 我需要访问另一个页面 本地 中的 php 函数提
  • 如何从 Java Web Start (JDK 8) 升级到 jlink (JDK 9+) 以实现自动更新应用程序?

    Java 8 及之前的版本有Java网络启动 https www java com en download faq java webstart xml 当我们更改应用程序时 它会自动更新应用程序 Oracle 建议用户迁移到jlink ht
  • 网络模拟器? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您是否知道能够模拟网络条件 例如带宽受限 延迟 端口关闭 拥塞 冲突 的软件 特定于平台很好 但我希望
  • Facebook JavaScript SDK 是否有 TypeScript 接口定义

    TypeScript 包包含 Node js 和 jQuery 的接口定义 我想知道是否有人已经为 Facebook JavaScript SDK 编写了定义 你可以用tsd https github com DefinitelyTyped
  • Eclipse RCP 应用程序:如何禁用特定扩展?

    我正在使用 Eclipse HELIOS 编写富客户端应用程序 以下条目会自动添加到我的应用程序 视角菜单 中 Java Java 浏览 Java 类型层次结构 团队同步 我需要摆脱他们 我正在使用扩展点 org eclipse ui ac
  • SQL Server SP_SEND_DBMAIL 图像文件附件

    我正在表上使用触发器来使用 sp send dbmail 发送电子邮件 我想在图像类型的电子邮件中包含文件附件 jpeg 的原始数据存储在二进制类型的 ndl Image 列中 我有以下代码 DECLARE ReferenceID varc
  • 使用适用于 Windows 的 Git 推送到 GitHub 时出错

    我已经在 GitHub 上创建了一个 Git 存储库 也创建了一个本地存储库 首先 我将远程存储库拉入本地存储库 然后我添加了一个文件 暂存该文件 提交了它 现在我尝试再次推送到远程存储库 但失败并显示以下消息 Pushing to htt
  • 在 Flutter 中隐藏滚动条上的底部导航栏

    我在正文和底部导航栏中有一个博客文章列表 我想在帖子列表向下滚动时使用向下滑动动画隐藏底部导航栏 并在向上滚动时使用向上滑动动画可见 怎么做 此解决方案只是解决此问题的方法 可能会发生一些有害的变化 import package flutt
  • Linq to NHibernate 与 ICriteria

    我通常经常使用 LINQ 尤其是 LINQ to Objects 因此我对 LINQ 相当熟练 我正在考虑使用 LINQ to NHibernate 作为我的 NHibernate 项目的查询语言 当我编写一些测试时 我注意到 LINQ t
  • 使用 Spring Kafka 添加自定义标头

    我计划使用 Spring Kafka 客户端在 Spring Boot 应用程序中使用 kafka 设置并生成消息 我看到 Kafka 0 11 中对自定义标头的支持详情here https issues apache org jira b
  • ionic 2 - inappbrowser“browser.on(...).subscribe 不是函数”错误

    我遵循这个http ionicframework com docs native in app browser http ionicframework com docs native in app browser 在appbrowser中使
  • Ruby 解压数组以阻止

    settings 127 0 0 1 80 0 0 0 0 443 我能怎么做 settings each do ip port end 代替 settings each do config ip port config end 您的第一个
  • 为什么我的图标不会在新的 Chrome 网上应用店中显示为完整尺寸?

    我在 Chrome 应用商店中发布了一个扩展程序 昨晚 网上商店的外观焕然一新 现在我的图标看起来非常小 位于拼图游戏的内部 我跟着指示 https developer chrome com extensions manifest icon
  • iPhone - 是否不可能获取 CALayers 组合的内容?

    我在屏幕外 UIView 比 320x480 大得多 上有一个 CALayer 进行 3D 转换 如何将 UIView 上看到的内容转储到 UIImage 中 注意 我已经编辑了问题以包含此代码 这就是我创建图层的方式 CGRect are
  • 如何从ITK注册中获得变换仿射?

    进行 3D MRI 扫描A B and C我想执行仿射 联合 配准B onto A 取配准的变换仿射矩阵并将其应用于C 我的问题是配准变换的仿射矩阵的符号错误 也许是因为方向错误 The TransformParameters包含 12 个
  • 从 UIColor 预设中获取 RGB 值

    在我的应用程序中 我将 RGB 颜色值传递给服务器 我的应用程序使用 UIColor 预定义值 例如 UIColor greyColor UIColor redColor 我知道我可以使用以下代码 const CGFloat c CGCol
  • 使用双指针时的奇怪行为

    我需要帮助来理解为什么在这个小程序中我无法正确操作指针 include
  • 如何在 vim 中创建映射以自动执行 .h c++ 文件的 ifdef 命令

    如何在 vim 中创建映射以自动执行 h c 文件的 ifdef 命令 基本上我想要一个映射来创建以下可与 h 和 hpp 等一起使用的内容 ifndef
  • 使用 Android AccountManager 进行第三方 OAuth2 授权

    我正在开发一个应用程序 需要通过 OAuth2 从第三方网络服务获得授权 第三方意味着它不是 Google 并且我不拥有它 本文 http developer android com training id auth authenticat