Google 不再支持使用要求您仅使用用户名和密码登录 Google 帐户的第三方应用或设备。
这对于各种应用程序来说都是一个问题,包括git send-email
。sendgmail
是 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.json
contains 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