适用于桌面客户端的 Gmail IMAP OAuth

2023-12-03

最近,Google 宣布他们支持 Gmail IMAP/SMTP 的 OAUth。我浏览了他们的多个文档,但我仍然对他们是否支持已安装应用程序的 OAuth 感到困惑。

1. In 本文档他们说:

注意:虽然OAuth协议 支持桌面/安装 应用程序用例,仅限 Google 支持 Web 应用程序的 OAuth。

但他们也有一份文件已安装应用程序的 OAuth.

2. 当我读到OAuth规范他们指出,它说(第 11.7 节):

在许多应用中,消费者 应用程序将受到控制 潜在不受信任的各方。为了 例如,如果消费者是一个自由的 可用的桌面应用程序, 攻击者可能能够下载 复制以供分析。在这种情况下, 攻击者将能够恢复 用于身份验证的消费者秘密 消费者到服务提供商。

另外我认为上面第 1 点中的免责声明是关于谷歌数据 API,并且 IMAP/SMTP 肯定不属于其中。

据我所知,对于已安装的应用程序,我可以进行如下设置:

  1. 在 example.com 上为我的应用程序创建一个小型网络应用程序。该网络应用程序与 Google 对话以获取访问令牌。

  2. 安装的应用程序与 example.com 通信只是为了获取访问令牌。

  3. 然后,安装的应用程序使用访问令牌与 Google 进行对话。

我现在很困惑。 这是唯一的方法吗? 另外,如果我从桌面应用程序进行 OAuth,我们必须随应用程序一起提供消费者密钥。那么,我们就无法维护消费者密钥的秘密。


是的,已安装的应用程序支持 Oauth;看使用 OAuth 的 Gmail IMAP 和 SMTP文档。

  1. 文档已经过时了(2008)
  2. 这是有道理的,但仅适用于不以安全方式存储访问令牌的应用程序。

你的设置很好,尽管我不认为有一个与谷歌对话的网络应用程序是强制性的;例如,您的用户只需将“请求令牌”复制并粘贴到您的桌面客户端应用程序即可。

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

适用于桌面客户端的 Gmail IMAP OAuth 的相关文章

随机推荐

  • Eclipse ADT 插件 - 图形布局工具滞后并占用内存

    Win7 64位 12GB内存 i7 ADT v 16 01 我的图形布局工具表现得很奇怪 每次我进行单个更改时 布局上方的工具按钮都会闪烁 并且它会 工作 大约 10 秒 直到最终完成更改 在此过程中 javaw exe 对于我执行的每个
  • 如何更改 Qt 上标题(水平/垂直)QTableWidget 的背景颜色?

    我想知道如何更改对象标题 水平 垂直 的背景颜色QTableWidget on Qt 我已经知道如何使用以下方法一起更改所有标题 ui gt tableWidget gt setStyleSheet QHeaderView section
  • 收到致命警报:handshake_failure

    我正在尝试使用以下方式向我的设备发送推送通知javapns图书馆在liferay 这是代码 private void pushNotification ActionRequest actionRequest ActionResponse a
  • 正则表达式替换电子邮件地址域?

    我需要一个正则表达式来混淆我拥有的数据库转储文件中的电子邮件 我想用一组域替换所有域 例如 fake com所以我不会冒险在开发过程中向真实的人发送电子邮件 电子邮件必须是唯一的才能匹配数据库限制 因此我只想替换域名并保留用户名 我目前有这
  • 如何添加“再玩一次”? java 的功能

    我正在为我的班级制作一个猜谜游戏 当您猜到正确的数字时 我需要一些帮助来在游戏结束时添加 再玩一次 功能 public class GuessingGame public static void main String args Scann
  • 插入转义字符

    我想用转义字符值替换并插入转义字符序列 同时考虑到 会使转义字符无效 例如 This is a n test Here is a n which represents a newline 在 Ruby 中实现这一目标的最简单方法是什么 我假
  • 为什么聚焦时 QLineEdit 样式不改变?

    我正在使用 Qt 及其样式表开发 GUI 在主窗口样式表上 我放置了以下样式 QLineEdit focus border 2px solid 006080 但当我使用它时 风格并没有像我预期的那样真正改变 但是 如果我将相同的样式表直接放
  • 将命令输出保存到变量

    在批处理文件中 我尝试获取命令的输出并将其保存到变量中 我的命令的目标是计算某个文件夹中的文件夹数量 我无法使用中提供的技巧this接受答案 因为我必须这样做cd path to my folder进入当前目录 不幸的是 我无法执行此命令
  • 如何判断 ALL_TAB_COLS 中哪些列未使用?

    当您在 Oracle 9i 上查询 ALL TAB COLS 视图时 它会列出标记为 UNUSED 的列以及 活动 表列 似乎没有一个字段明确说明某列是否未使用 也没有我可以加入的任何视图列出表中未使用的列 如何轻松找出哪些是未使用的列 以
  • 如何从给定的子键中查找数组的所有父键?

    假设我有以下嵌套 多维数组 array World gt array Asia gt array Japan gt array City gt Tokyo 我希望能够找到当前城市层次结构中的所有父母 例如 对于城市 响应应该是包含以下内容的
  • 使用 openMP 进行多核处理与多线程处理

    这个问题听起来可能很基本 但是我找不到任何具体的答案 现在假设我们有一个多核处理器 例如 corei5 680 2 个物理核心和支持 HT 的 4 个操作系统可用核心 我的问题是 openMP 到底适合什么情况 1 当我们说使用 openM
  • ASP.NET MVC 中的“请等待”页面

    一个页面执行多个任务 处理时间较长 我们希望在每项任务完成时向用户提供反馈 在 ASP NET Webforms 中我们使用Response Flush 在 ASP NET MVC 中您会采取什么方式解决这个问题 您仍然可以使用 Respo
  • 使用自定义删除器增强智能指针

    我可以理解boost shared ptr不验证NULL在调用自定义删除器函数之前 但我该如何实现这一点呢 这将帮助我避免编写愚蠢的包装器fclose或任何未 正确 指定行为的函数 我的提升 define BOOST VERSION 104
  • Django 注册激活重定向与 django.contrib.messages

    我正在尝试设置我的 django 注册激活工作流程 以便当用户点击激活链接时 它会使用 django 消息框架将他们重定向到登录页面 并显示一条漂亮的小消息django contrib messages 现在 我已经成功使用以下命令将用户发
  • 在共享首选项中设置默认值

    有没有一种方法可以在共享首选项中设置默认值 这是我的加载首选项代码 public void LoadPreferences SharedPreferences sharedPreferences getSharedPreferences v
  • 是否可以在 Git 中只拉取一个文件?

    我正在开发一个有一些损坏测试的 Git 分支 我想从另一个已经修复的分支中提取 合并更改 而不仅仅是覆盖 这些测试 我知道我能做到 git pull origin that other branch 但这将尝试合并许多其他文件 因为我还没有
  • 如何根据列值将 CSV 文件拆分为多个文件

    我有 CSV 文件 可能如下所示 name1 1 11880 name2 1 260 483 name3 1 3355 82 name4 1 4179 48 name1 2 10740 4 name2 2 1868 69 name3 2 3
  • 求解线性方程

    我需要以编程方式求解 C Objective C 或 如果需要 C 中的线性方程组 以下是方程式的示例 44 3940 a 50 0 b 37 0 tx 45 3049 a 43 0 b 39 0 tx 44 9594 a 52 0 b 4
  • 将数组的内容添加到组合框

    我有一个数组 在另一个类中 其中有 10 个值 我想将此数组的值添加到组合框中 这可能吗 谢谢 是的 一般来说 你可以这样做 JComboBox b new JComboBox new String String1 String2 是 有一
  • 适用于桌面客户端的 Gmail IMAP OAuth

    最近 Google 宣布他们支持 Gmail IMAP SMTP 的 OAUth 我浏览了他们的多个文档 但我仍然对他们是否支持已安装应用程序的 OAuth 感到困惑 1 In 本文档他们说 注意 虽然OAuth协议 支持桌面 安装 应用程