XOAUTH GMAIL问题

时间:2012-01-23 17:31:49

标签: oauth gmail-imap

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

CODE:

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");
}

}

请告知您的想法,并且还要注意我已经尝试使用真正的消费者密钥和秘密并出现同样的错误,请参阅下面的异常:

ERROR:

  

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

类Oauth与java sample zip

中所见的同一个包中的其他标准类XoauthAuthenticator.java,XoauthProtocol.java等一起使用

请问您能否就我遇到的这个例外提出建议,因为看起来Gmail Oauth协议看起来比我想象的要困难,我只是想以编程方式连接到用户的 电子邮件(授权后)并检索电子邮件以进行进一步分析,由于其开放平台,我决定使用Gmail。

我真的很想实现xoauth.py文件(See this)的java等价物,因为我对python一无所知,请告知你的想法。

亲切的问候,

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,然后确保与gmail的交换完全如this example

所示

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

答案 1 :(得分:0)

Thread.Sleep(3000)getFolder("Inbox");

之后添加inbox.open(Folder.READ_ONLY);

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