2012-02-23 4 views
3

oauthを使用して自分の受信ボックスにアクセスしようとしていますが、JAVAコードを使用して生成したトークンを使用すると、私はIMAPを使用して認証するためにoauthトークンを渡しています。しかし、私はpythonを使用してトークンを生成し、私のコードで同じものを使用すると、正常に動作し、私の受信トレイから電子メールを取得します。ここでJAVAコードで生成されたトークンを使用しているときにoauthの証明書が無効です(失敗)

は、IMAPを使用してコードスニペットです:ここで

public static IMAPSSLStore connectToImap(String host, 
              int port, 
              String userEmail, 
              String oauthToken, 
              String oauthTokenSecret, 
              OAuthConsumer consumer, 
              boolean debug) throws Exception { 
    Properties props = new Properties(); 
    props.put("mail.imaps.sasl.enable", "true"); 
    props.put("mail.imaps.sasl.mechanisms", "XOAUTH"); 
    props.put(XoauthSaslClientFactory.OAUTH_TOKEN_PROP, 
      oauthToken); 
    props.put(XoauthSaslClientFactory.OAUTH_TOKEN_SECRET_PROP, 
      oauthTokenSecret); 
    props.put(XoauthSaslClientFactory.CONSUMER_KEY_PROP, 
      consumer.consumerKey); 
    props.put(XoauthSaslClientFactory.CONSUMER_SECRET_PROP, 
      consumer.consumerSecret); 
    Session session = Session.getInstance(props); 
    session.setDebug(debug); 

    final URLName unusedUrlName = null; 
    IMAPSSLStore store = new IMAPSSLStore(session, unusedUrlName); 
    final String emptyPassword = "anonymous"; 

    store.connect(host, port, userEmail, emptyPassword); 
    return store; 
} 

はエラーログです -

DEBUG: setDebug: JavaMail version 1.3.3 
1 
2 
DEBUG: mail.imap.fetchsize: 16384 
DEBUG: enable SASL 
DEBUG: SASL mechanisms allowed: XOAUTH 
3 
4 
* OK Gimap ready for requests from 122.179.85.133 kn10if6680532igc.14 
A0 CAPABILITY 
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH 
A0 OK Thats all she wrote! kn10if6680532igc.14 
IMAP DEBUG: AUTH: XOAUTH 
DEBUG: protocolConnect login, host=imap.googlemail.com, [email protected], password=<non-null> 
IMAP SASL DEBUG: Mechanisms: XOAUTH 
IMAP SASL DEBUG: SASL client XOAUTH 
A1 AUTHENTICATE XOAUTH 
+ 
IMAP SASL DEBUG: challenge: : 
IMAP SASL DEBUG: callback length: 1 
IMAP SASL DEBUG: callback 0: [email protected] 
IMAP SASL DEBUG: response: GET https://mail.google.com/mail/b/[email protected]/imap/ oauth_signature_method="HMAC-SHA1",oauth_token="1%2Furn42qGc5mpD3BwVvJMzeVkHl_9iVRCZvaSOYmKNH5A",oauth_consumer_key="mydomain.com",oauth_timestamp="1329301212",oauth_nonce="629121335212995",oauth_version="1.0",oauth_signature="7O1YHXywiqOX8XzSAd%2BzbmDoBVw%3D" : 
R0VUIGh0dHBzOi8vbWFpbC5nb29nbGUuY29tL21haWwvYi9wZXRlckBhMm9tb2JpbGUuY29tL2ltYXAvIG9hdXRoX3NpZ25hdHVyZV9tZXRob2Q9IkhNQUMtU0hBMSIsb2F1dGhfdG9rZW49IjElMkZ1cm40MnFHYzVtcEQzQndWdkpNemVWa0hsXzlpVlJDWnZhU09ZbUtOSDVBIixvYXV0aF9jb25zdW1lcl9rZXk9ImEyb21vYmlsZS5jb20iLG9hdXRoX3RpbWVzdGFtcD0iMTMyOTMwMTIxMiIsb2F1dGhfbm9uY2U9IjYyOTEyMTMzNTIxMjk5NSIsb2F1dGhfdmVyc2lvbj0iMS4wIixvYXV0aF9zaWduYXR1cmU9IjdPMVlIWHl3aXFPWDhYelNBZCUyQnpibURvQlZ3JTNEIg== 
5 
DEBUG: connection available -- size: 1 
A2 EXAMINE INBOX 
A1 NO [ALERT] Invalid credentials (Failure) 
A2 BAD Unknown command r5if6689112igo.50 
A3 LOGOUT 
* BYE Logout Requested r5if6689112igo.50 
A3 OK Quoth the raven, nevermore... r5if6689112igo.50 
Exception in thread "main" javax.mail.MessagingException: A2 BAD Unknown command r5if6689112igo.50; 
    nested exception is: 
    com.sun.mail.iap.BadCommandException: A2 BAD Unknown command r5if6689112igo.50 
    at com.sun.mail.imap.IMAPFolder.open(IMAPFolder.java:820) 
    at com.a2o.service.collaboration.common.XoauthAuthenticator.getMessages(XoauthAuthenticator.java:238) 
    at com.a2o.service.collaboration.common.XoauthAuthenticator.main(XoauthAuthenticator.java:205) 

JAVAコードからトークン適切に生成する方法があります。私の実際の要件は、私のiPadクライアントを使用してトークンを生成し、私のサーバーでそのトークンを使用して電子メールを取得することです。どんな援助も高く評価されています。

答えて

関連する問題