最近,我正在尝试使用 XOAuth2 协议从 Gmail 获取电子邮件。特别是,我正在使用https://code.google.com/p/google-mail-oauth2-tools/downloads/list中的“OAuth2Authenticator.java” 。
但是,我总是收到一个无效的凭证错误,如下所示:
A1 NO [ALERT] Invalid credentials (Failure) 在线程“main”中出现异常 javax.mail.AuthenticationFailedException: [ALERT] Invalid credentials (Failure) at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:566) at javax.mail.Service.connect(Service.java:265)
在阅读之前,由于放链接的限制,我不能写“httoo://”,所以请认为这个http头是一些url信息的前面。
在发布这个问题之前,我想我看了大部分关于这个问题的文章。许多文章都是关于使用 OAuth1.0(已弃用)但是,我仍然无法弄清楚如何使其与 OAuth2 和 XOAuth2 一起使用。我感谢任何建议/帮助。
以下是我正在采取的步骤:
通过 OAuth2 获取范围为 mail.google.com/ 的访问令牌
只需将此访问令牌和 gmail 帐户(例如 test@gmail.com)放入“OAuth2Authenticator.java”。
在这个过程之后,我总是得到无效的凭证。
有趣的是,我可以通过Google OAuth2.0 Playground 中指定的Feed URL(即https://mail.google.com/mail/feed/atom )获取未读邮件。
这表明我确信我获得了正确的访问令牌。但是,使用此示例代码对 IMAP 根本不起作用。
实际上,范围“mail.google.com/”并不包含在 Google OAuth2.0 Playground 的列表中。
为了获取 XOAuth2 的访问令牌,还有其他特殊的方法来获取访问令牌吗?
对于XOAuth2的官方页面,我们需要使用base64对访问令牌进行编码。但是,我认为示例代码正在执行此过程。
此外,此示例的 SMTP 根本不起作用。但是,在更改属性后,我可以让它工作。这段代码是旧的吗?但是,不幸的是,我需要的是 IMAP。但是,在尝试设置一些不同/新的属性后,IMAP 根本不起作用......
我被这个问题困扰了很长时间。所以,我发布了这个问题。我非常感谢任何建议/帮助。
问候