2012-04-10 12 views
2

Ich verwende oauth2 (node.js und die Bibliothek connect-oauth), um eine Verbindung mit der google contacts API version 3.0 herzustellen. Abrufen des Aktualisierungstokens mithilfe von oauth2 in der Google Kontakte-API Version 3.0

tut so, erhalte ich eine Antwort wie:

{ access_token : "...", 
"token_typen": "Bearer", 
"expires_in" : 3600, 
"id_token": "..." } 

Ich vermisse die Aktualisierungs-Token einen neuen Zugriffstoken, sobald diese abgelaufen bekommen verwendet werden.

Optionen für oauth2

{ host: 'accounts.google.com', 
    port: 443, 
    path: '/o/oauth2/token', 
    method: 'POST', 
    headers: 
    { 'Content-Type': 'application/x-www-form-urlencoded', 
    Host: 'accounts.google.com', 
    'Content-Length': 247 } } 

post-Körper ‚redirect_uri = http% 3A% 2F% 2Flocalhost% 2Foauth2callback & grant_type = authorization_code & client_id = clientId & client_secret = CLIENTSECRET & type = web_server & code = 4 % 2F3gbiESZTEOjiyFPLUhKfE_a_jr8Q‘

HINWEIS: ich habe versucht = Kraft hinzuzufügen approval_prompt von einem similar question auf die Anfrage-POST_BODY aber dies führte zu einer n Fehler

{ statusCode: 400, data: '{\n "error" : "invalid_request"\n}' } 

Antwort

2

NOTE: I tried to add approval_prompt=force from a similar question to the request-post_body but this resulted in an Error

Sie brauchen nicht die approval_prompt param, wenn Sie für ein Token fragen. Der Parameter * approval_prompt * gilt für den Autorisierungsteil.


I am missing the refresh token...

Die einzige Möglichkeit, KEINE * refresh_token * Lassen Sie sich, wenn:

, versuchen Sie: access_type=offline, zu dem Autorisierungscode Anfrage.

bearbeiten:

d.h .:

https://accounts.google.com/o/oauth2/auth?client_id=**your_client_id**&scope=https://www.googleapis.com/auth/plus.me&redirect_uri=http://localhost&response_type=code&access_type=offline 

Wenn Sie immer 400 ist, weil Sie einen ungültigen Parameter hinzufügen oder einer fehlt.

Viel Glück!

+0

Dank für Ihre Antwort. Leider funktioniert das auch nicht. Ich erhalte einen Fehler: {statusCode: 400, data: '{"error": "invalid_request"}'}. – forste

0

Einmal habe ich getestet - ich hatte das Google-Autorisierungs-Token aus der App gelöscht - so versuchte es, ein anderes zu bekommen und es tat, aber ohne ein Refresh-Token.

So überprüfen Sie die App, die Sie testen werden, ist nicht für das Konto autorisiert Sie testen (Ist das sinnvoll?)

+0

Google gibt Ihnen nur einmal ein Aktualisierungstoken. Nach der ersten Authentifizierung erhalten Sie nur Zugriffsmarken.Sie können ein neues Aktualisierungstoken erhalten, wenn Sie (oder Ihre Nutzer) den Zugriff über https://accounts.google.com/b/0/IssuedAuthSubTokens entfernen und die Authentifizierungssequenz von Anfang an starten. – HardScale