最近,我正在尝试使用XOAuth2协议从Gmail收到电子邮件。 特别是,我正在使用https://code.google.com/p/google-mail-oauth2-tools/downloads/list中的“OAuth2Authenticator.java”。
但是,我总是得到一个无效的凭据错误,如下所示:
A1否[ALERT]凭据无效(失败) 线程“main”中的异常javax.mail.AuthenticationFailedException:[ALERT]凭据无效(失败) 在com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:566) 在javax.mail.Service.connect(Service.java:265)
在阅读之前,由于链接的限制,我不能写“httoo://”,所以请想一想这个http标题是一些网址信息的前面。
在发布这个问题之前,我想我看过大部分有关此问题的文章。很多文章都是关于使用OAuth1.0(已弃用)但是,我仍然无法弄清楚如何使用OAuth2& XOAuth2。我感谢任何建议/帮助。
以下是我正在采取的步骤:
通过OAuth2获取访问令牌,范围为mail.google.com /
只需输入此访问令牌&将gmail帐户(例如test@gmail.com)改为“OAuth2Authenticator.java”。
在此程序之后,我总是获得无效的凭证。
有趣的是,我可以通过Google OAuth2.0 Playground中指定的Feed网址(即https://mail.google.com/mail/feed/atom)获取未读邮件。
这表明我确信我获得了正确的访问令牌。但是,对于使用此示例代码的IMAP,它根本不起作用。
实际上,范围“mail.google.com/”未包含在Google OAuth2.0 Playground列表中。
要获取XOAuth2的访问令牌,还有其他特殊方法可以获取访问令牌吗?
对于有关XOAuth2的官方页面,我们需要使用base64对访问令牌进行编码。 但是,我认为示例代码正在执行此过程。
此外,此示例的SMTP根本不起作用。但是,在更改属性后,我可以使其工作。这段代码老了吗? 但不幸的是,我需要的是IMAP。但是,在尝试设置一些不同/新属性后,IMAP根本不起作用....
我长期坚持这个问题。所以,我发布了这个问题。 我非常感谢任何建议/帮助。
此致
答案 0 :(得分:0)
我发现了有关无效凭据的问题
A1 NO [ALERT] Invalid credentials (Failure) Exception in thread "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)
要删除上述错误,您必须使令牌无效并使用以下代码获取新令牌
1- accountManager.invalidateAuthToken("com.google", token);
无效令牌后,您必须使用以下代码获取刷新令牌
String newToken = AccountManager.get(this).getAuthToken(new Account(account,"com.google"),
AUTH_TOKEN_TYPE, true, null, null).getResult().getString(AccountManager.KEY_AUTHTOKEN);
现在可以使用新令牌登录。