我已经完成了为我的 Google 帐户(不使用 GSuite)上的测试应用程序创建 OAuth2 访问令牌的过程,每当我尝试使用它通过 imap.google.com 使用 XOAUTH2 进行身份验证时,它都会失败并返回 {" status":"400","schemes":"Bearer","scope":"https://mail.google.com/"} 后跟 IMAP 状态响应 NO [AUTHENTICATIONFAILED] 凭据无效(失败)
我已经看到其他一些类似的问题,事实证明问题是因为他们在请求令牌时没有使用范围https://mail.google.com/ 。但是,我确实使用了该范围并且令牌验证了;使用https://www.googleapis.com/oauth2/v1/tokeninfo它返回:
{
"issued_to": "xxxxx.apps.googleusercontent.com",
"audience": "xxxxx.apps.googleusercontent.com",
"scope": "https://mail.google.com/",
"expires_in": 2083,
"access_type": "offline"
}
问题是,使用 Google 的 POP3 服务器连接到 pop.gmail.com 进行身份验证时,相同的令牌也能正常工作。这似乎是 IMAP 特有的问题,我检查过,我正在测试的 Gmail 帐户都启用了 POP3 和 IMAP 访问。
此外,执行 XOAUTH2 身份验证的相同 IMAP 代码也适用于 Outlook 及其访问令牌。因此,当我使用最广泛的可用范围时,我不知道为什么 Google 会拒绝有效的令牌。
欢迎任何建议或见解。