1

我现在已经尝试了 XOAUTH 和 Gmail 代码的基本 java 实现,并且我不断遇到流行的“无效凭据错误”。有没有已知的解决方案,因为我似乎无法在网上找到任何东西。请参阅下面的代码:

代码:

public class Oauth {

private static final String SCOPE = "https://mail.google.com/";

private static final String CONSUMER_KEY = "anonymous";
private static final String CONSUMER_SECRET = " anonymous ";
private static final String USER_EMAIL = "useremail@gmail.com";

public static void main(String[] args) throws Exception {

    GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
    oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);

    oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
    OAuthSigner signer = new OAuthHmacSha1Signer();

    GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(signer);

    oauthParameters.setScope(SCOPE);

    oauthHelper.getUnauthorizedRequestToken(oauthParameters);

    String requestUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
    System.out.println(requestUrl);
    System.out.println("Please visit the URL above to authorize your OAuth "
            + "request token.  Once that is complete, press any key to "
            + "continue...");
    System.in.read();

    String token = oauthHelper.getAccessToken(oauthParameters);
    System.out.println("OAuth Access Token: " + token);
    System.out.println();

    //IMAP
    XoauthAuthenticator.initialize();

    IMAPSSLStore imapSslStore = XoauthAuthenticator.connectToImap("imap.googlemail.com   ",
            993,
            USER_EMAIL,
            oauthParameters.getOAuthToken(),
            oauthParameters.getOAuthTokenSecret(),
            new OAuthConsumer(null, CONSUMER_KEY, CONSUMER_SECRET, null),
            true);
    System.out.println("Successfully authenticated to IMAP.\n");
}

}

请就您的想法提出建议,并注意我曾尝试使用真实的消费者密钥和秘密,但出现相同错误,请参见下文了解例外情况:

错误:

A1 NO [ALERT] 无效凭据(失败)线程“主”javax.mail.AuthenticationFailedException 中的异常:[ALERT] com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:660) 处的无效凭据(失败) javax.mail.Service.connect(Service.java:295) 在 GMAILP.XoauthAuthenticator.connectToImap(XoauthAuthenticator.java:106) 在 com.google.code.samples.xoauth.Oauth.main(Oauth.java:49)

Oauth 类与其他标准类 XoauthAuthenticator.java、XoauthProtocol.java 等在同一个包中使用,如java 示例 zip中所示

请您就我面临的这个异常提供建议,因为它看起来像 Gmail Oauth 协议看起来比我预期的要困难,我只想以编程方式连接到用户的电子邮件(在授权之后)并检索电子邮件以进行进一步分析,我由于它的开放平台,决定使用Gmail。

我确实希望实现一个与 xoauth.py 文件等效的 java(请参阅此文件),因为我不了解 python,请告知您的想法。

亲切的问候,

4

2 回答 2

1

我遇到了同样的问题,然后确保与 gmail 的交换完全如本示例所示

即向服务器发送功能请求并使用完全相同的标签(例如A01),它对我有用。

于 2012-06-09T00:23:05.297 回答
0

在和Thread.Sleep(3000)之后添加getFolder("Inbox");inbox.open(Folder.READ_ONLY);

这样做之后,它对我有用。

于 2012-03-17T04:52:53.903 回答