Herstellen einer Verbindung mit der Gmail-IMAP-API in javascript / node.js

8

Ich versuche über die IMAP-API eine Verbindung zu Google Mail herzustellen. Ich verwende Bruno Morencys node-imap-Bibliothek dafür. Zum Erstellen von oauth_signature, timestamp und nonce verwende ich eine andere Bibliothek .

Um genauer zu sein: Der Ressourcenbesitzer hat den Verbraucher bereits authentifiziert. Also habe ich einen Access-Token + Secret. Natürlich habe ich auch das Geheimnis des Kunden. Also möchte ich mich mit dem hier beschriebenen (Überschrift: SASL Initial Client Request) mit dem beschriebenen XOAuth-Mechanismus anmelden.

Beim Ausführen des Codes bekomme ich einen Fehler:

%Vor%

Ich frage mich, was ich falsch mache. Eigentlich könnte es mehr Gründe geben. Falsche base64-Kodierung (obwohl Kodierung wahrscheinlich richtig funktioniert, da Sie einen anderen Fehler für verschiedene Kodierungen bekommen, bin ich ziemlich sicher, dass es das nicht ist), falsche Signaturberechnung (UPDATE: Ich habe das jetzt mit Ссылка ), nonce Berechnung oder andere.

Ich kann mich mit denselben Anmeldeinformationen (Consumer + Ressource-Besitzer) in einer Java-App authentifizieren, daher sind die Anmeldeinformationen höchstwahrscheinlich nicht die Ursache des Fehlers (nur falsche Codierung / Signaturberechnung)

Endlich der Code. Ich habe den Schlüssel und das Geheimnis des Verbrauchers ausgelassen, weder das Token des Ressourceneigentümers noch das Geheimnis aus offensichtlichen Gründen.

%Vor%

AKTUALISIERT: Ich habe ein Beispiel gefunden, wie man die Basissignatur-Zeichenkette erzeugt. auf dieser Grundlage habe ich meinen Code geändert. Entsprechend bekomme ich jetzt die gleichen Ergebnisse für die Signatur (Generieren der Basiszeichenfolge für die Signatur, Berechnen des Signaturwerts, Prozent des codierenden Signaturwerts) wie in dem Beispiel. Dies bedeutet, dass ich (d. H. Die oauth-Bibliothek) höchstwahrscheinlich die oauth_signature richtig berechnet habe und etwas anderes falsch läuft.

    
forste 20.03.2012, 22:10
quelle

2 Antworten

2

Endlich war ich erfolgreich. Mein Problem am Ende war, dass ich den Schlüssel in oauth.js zum Testen des oauth-Beispiels änderte, indem ich den Job zurück änderte.

Also sollte das obige Beispiel jetzt funktionieren, um auf der gmail IMAP API zu authentifizieren

    
forste 21.03.2012, 11:49
quelle
1

Wenn Sie der Meinung sind, dass es sich um Codierung handelt, lesen Sie Wie Sie die Base64-Codierung vornehmen in node.js? für den Knoten bas64 anstelle von webtoolkit.

    
Krut 21.03.2012 10:12
quelle

Tags und Links