【问题标题】:difficulty getting oauth 2 token file with yagmail难以使用 yagmail 获取 oauth 2 令牌文件
【发布时间】:2023-01-20 23:53:12
【问题描述】:

我正在尝试使用 python 包 yagmail 发送电子邮件,但很难获得工作授权。

我的问题是获取 Oauth 2 令牌,但与 yagmail 断开连接,如 github 线程中指定的那样。正如这篇文章 https://github.com/kootenpv/yagmail/issues/143 中所述,谷歌似乎没有提供格式正确的凭证文件。但是我尝试了很多东西,每一个都有自己的问题。

  • 当我在 Google API 控制台中设置客户端 ID 时,下载 json 作为 credentials.json 并让系统创建 token.json, 事情到了一定程度:我通过谷歌被带到“选择一个 account, do you want to continue”并创建令牌。我能够 为 gmail 帐户打印标签。但是当我发出 yag.send(to='xxx@gmail.com', subject='测试 Yagmail', contents='Hurray, it worked!'), 我收到错误消息“TypeError: refresh_authorization() 得到了一个意外的关键字参数‘token’。” 当我查看令牌文件时,它确实包含密钥“令牌” 它不应该根据这篇 github 帖子https://github.com/kootenpv/yagmail/issues/143#issuecomment-527115298][2]
  • 如果我进入令牌并编辑它以反映预期 通过删除上面链接中标识的内容 未指定并在名称前加上“google_”前缀,出现错误 “ValueError:授权的用户信息不是预期的格式, 缺少字段 refresh_token、client_id、client_secret。”它没有 似乎喜欢“google_”前缀。
  • 如上编辑没有“google_”前缀的令牌文件似乎 进一步产生不同的错误“发生错误: <请求时HttpError 403 https://gmail.googleapis.com/gmail/v1/users/me/labels?alt=json 返回“请求的身份验证范围不足”

我卡住了。 Oauth2 相对较新,但似乎其他人能够使用 yagmail。有没有我想念的把戏?我最初在 Github 上发帖是因为我发现了其他相关帖子,但似乎更适合问答。 Github 和 SO 之间有关系吗?区别?

感谢您的帮助, 布莱恩

【问题讨论】:

    标签: python authentication oauth-2.0 yagmail


    【解决方案1】:

    我终于找到了解决方案,而且答案隐藏在众目睽睽之下。

    首先,需要按照这篇文章中的概述设置 Oauth 授权(非常好):Sending email via Gmail & Python

    如前所述,当 yagmail 第一次运行时,授权过程给出了指示,最后声明“导航到以下 URL 以进行身份​​验证:”并询问“输入您被重定向到的本地主机 URL:”

    问题是浏览器窗口显示的似乎是一条错误消息,一张带有消息“无法访问此站点,本地主机拒绝连接,重新加载”等的悲伤表情。我从没想过这是预期的行为。该 url 是在错误屏幕中导航到的那个。

    简单地说明错误应该是预料之中的,并且需要将 url 复制并粘贴到上面的帖子中会有很大帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 2017-10-18
      • 1970-01-01
      相关资源
      最近更新 更多