我尝试使用终端中的 OpenSSL 手动登录我的 Gmail 帐户。但由于某种原因,即使密码正确,Gmail 也不会授权我的登录。以下是我的终端的概要:
openssl s_client -crlf -connect imap.googlemail.com:993
CONNECTED(00000003)
.......
# Some stuff displayed here
.......
* OK Gimap ready for requests from <my-ip> f75mb26659817ybg
01 login [email protected] password
01 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)
为什么会失败?另外,我是这方面的新手,对此非常好奇,因此,如果能提供一些关于这方面的文章建议就太好了。
我也尝试自己搜索相关文章,但搜索了好几页仍然无果。
答案1
经过几次尝试,我发现 Gmail 已经放弃了对基本 IMAP 登录的支持,因为它“不太安全”。因此,我最终使用 OAuth2 进行身份验证。我还发现,我的目标(获取未读电子邮件计数)也可以在之后使用 Gmail API 实现。为了实现它,我用 bash 编写了一个脚本。
以下是该脚本的简要功能:
创建凭证对于可以访问 Gmail API 并设置必要范围的客户端。
使用这些凭证为用户帐户生成授权码。
在此期间,终端打开用户同意网页询问用户是否授权客户端。一旦授权,OAuth2 授权代码被发送到
localhost
指定的端口(我使用了 5000),然后被 TCP 监听器捕获,脚本在后台临时运行并存储。存储授权码后,生成 API 访问令牌并将其存储在某处以供使用。
发出如下 curl 请求来访问 API:
curl -H "Authorization: Bearer <the access token>" <the request>
以下是相关链接:
- Gmail 未读邮件计数器脚本:此脚本使用存储在文件中的刷新令牌,通过使用刷新令牌生成的新访问令牌来访问 API。
- OAuth 访问令牌生成器脚本:这将生成一个访问令牌和刷新令牌并将它们存储在本地文件中。
- 他们的文件
答案2
对我来说很管用。一定要让不太安全的应用程序访问你的账户但是,否则简单的登录(用户+密码)可能不起作用。