git send-email 的 gmail sendgmail 配置

git send-email 的 gmail sendgmail 配置

从 2022 年 5 月 30 日起

Google 不再支持使用要求您仅使用用户名和密码登录 Google 帐户的第三方应用或设备。

这对于各种应用程序来说都是一个问题,包括git send-emailsendgmail是 Google 用 go 编写的工具,允许使用 OAuth2 凭据。

使用sendgmail需要一定的Google Cloud 中的配置,下载带配置的 JSON 并重命名为~/.sendgmail.json,然后运行一次:

$ GOPATH/bin/sendgmail [email protected] -setup

1. Ensure that you are logged in as [email protected] in your browser.

2. Open the following link and authorise sendgmail:
https://accounts.google.com/o/oauth2/auth?...

3. Enter the authorisation code:

我的~/.sendgmail.jsoncontains redirect_uris":["http://localhost"],因此单击的网站被重定向到本地主机(我的计算机上没有网络服务器),并且我没有获得授权代码。有人能解释一下在 Google Cloud 设置中到底要做什么才能使其正常工作吗?

答案1

设置工作区依照指示这些步骤。

启用 Gmail API关于该项目。

设置 OAuth 同意页面。

  • 我不确定您是否可以克服没有授权域名的问题。我包含了一个我自己的(并用于不同的 Google OAuth 工作流程)
  • 确保允许 Gmail API ../auth/gmail.send 范围,似乎不需要其他任何东西。
  • 将您自己作为注册测试用户。

创建凭据。

  • 类型:OAuth 客户端 ID
  • 应用程序类型:桌面应用程序(其他应用程序也可以工作,只需遵循链接的指导即可)

安装 sendgmail go 包go install github.com/CyCoreSystems/gmail-oauth/sendgmail@latest

运行设置命令正如你所包括的。

按照说明操作进行身份验证并重定向到非功能页面(由于redirect_uri是localhost。)

您需要在提示中输入的授权代码可以从该非功能性重定向的 URL 中抓取。

这是 URL 的示例,您需要 GET 参数的值(即 after和 before 的code整个字符串):code=&scope

http://localhost/?state=state&code=foobarauthcode&scope=https://mail.google.com/

该工具在提交授权代码后似乎没有输出任何内容,但是测试向我自己发送补丁文件是成功的:

git send-email --smtp-server=$GOPATH/bin/sendgmail [email protected] patch-test.diff

相关内容