Ich versuche, OAuth zu verwenden, um auf meinen Posteingang zuzugreifen. Ich erhalte immer einen Fehler mit ungültigen Anmeldedaten, wenn ich den Token verwende, der mit meinem JAVA-Code generiert wurde. Ich verwende IMAP und übergebe den OAuth-Token zur Authentifizierung. Wenn ich jedoch den Token mit Python generiere und im Code verwende, funktioniert es einwandfrei und ruft E-Mails aus meinem Posteingang ab.
Hier ist der Codeausschnitt unter Verwendung von 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;
}
Hier ist das Fehlerprotokoll -
DEBUG: setDebug: JavaMail-Version 1.3.3
1
2
DEBUG: mail.imap.fetchsize: 16384
DEBUG: SASL aktivieren
DEBUG: Erlaubte SASL-Mechanismen: XOAUTH
3
4
* OK Gimap bereit für Anfragen von 122.179.85.133 kn10if6680532igc.14
A0 FÄHIGKEIT
* FÄHIGKEIT 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: Protokoll-Verbindung, login, host=imap.googlemail.com, user=me@mydomain.com, password=
IMAP SASL-DEBUG: Mechanismen: XOAUTH
IMAP SASL-DEBUG: SASL-Client XOAUTH
A1 AUTHENTIFIZIEREN XOAUTH
+
IMAP SASL-DEBUG: Herausforderung: :
IMAP SASL-DEBUG: Callback-Länge: 1
IMAP SASL-DEBUG: Callback 0: javax.security.auth.callback.NameCallback@d1e832
IMAP SASL-DEBUG: Antwort: GET https://mail.google.com/mail/b/me@mydomain.com/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: Verbindung verfügbar -- Größe: 1
A2 INBOX PRÜFEN
A1 NEIN [ALARM] Ungültige Anmeldeinformationen (Fehler)
A2 SCHLECHT Unbekannter Befehl r5if6689112igo.50
A3 AUSLOGGEN
* BYE Logout angefordert r5if6689112igo.50
A3 OK Quoth the raven, nevermore... r5if6689112igo.50
Ausnahme im Thread "main" javax.mail.MessagingException: A2 SCHLECHT Unbekannter Befehl r5if6689112igo.50;
eingebettete Ausnahme ist:
com.sun.mail.iap.BadCommandException: A2 SCHLECHT Unbekannter Befehl 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)
Gibt es einen Weg, um den Token richtig aus dem JAVA-Code zu generieren. Meine tatsächliche Anforderung besteht darin, den Token mit meinem iPad-Client zu generieren und E-Mails mit diesem Token auf meinem Server abzurufen. Jede Hilfe wird sehr geschätzt.