使用XOAuth2 for Gmail的凭据无效

时间:2013-06-28 22:31:11

标签: google-oauth

最近,我正在尝试使用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。我感谢任何建议/帮助。

以下是我正在采取的步骤:

  1. 通过OAuth2获取访问令牌,范围为mail.google.com /

  2. 只需输入此访问令牌&将gmail帐户(例如test@gmail.com)改为“OAuth2Authenticator.java”。

  3. 在此程序之后,我总是获得无效的凭证。

    有趣的是,我可以通过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根本不起作用....

    我长期坚持这个问题。所以,我发布了这个问题。 我非常感谢任何建议/帮助。

    此致

1 个答案:

答案 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);

现在可以使用新令牌登录。

相关问题