2014-05-20 4 views
5

Ich versuche, Token von OAuth.io für jeden Google-basierten Provider zu bekommen, aber wenn ich mich authentifiziere, erhalte ich ein access_token aber kein refresh_token. Ich habe offline für den access_type gewählt, aber immer noch keine Freude.Erhalte Refresh-Tokens von Google mit OAuth.io

Ich habe versucht, durch die Dokumentation nach einer Lösung zu suchen, aber es deckt kaum etwas in Bezug auf das Refresh-Token ab.

Antwort

10

Um die Aktualisierungs-Token von Google zu erhalten, müssen Sie 2 Dinge:

  • Die Offline-Option cf https://developers.google.com/accounts/docs/OAuth2WebServer

    „Ein Token, das einen neuen Zugriffstoken zu erhalten, verwendet werden kann. Aktualisierungstoken sind gültig, bis der Benutzer den Zugriff widerruft. Dieses Feld ist nur vorhanden, wenn access_type = offline in der Autorisierungscodeanforderung enthalten ist. "

  • Die Option approval_prompt auf „Kraft“ cf https://developers.google.com/accounts/docs/OAuth2WebServer

    „. Wichtig: Wenn Ihre Anwendung ein Aktualisierungs-Token erhält, ist es wichtig, dass die Aktualisierungs-Token für die zukünftige Verwendung zu speichern Wenn Ihre Anwendung Wenn Sie das Aktualisierungs-Token verlieren, müssen Sie den Benutzer erneut zur Bestätigung auffordern, bevor Sie ein anderes Aktualisierungs-Token anfordern.Wenn Sie den Benutzer erneut zur Zustimmung auffordern müssen, fügen Sie den Parameter approval_prompt in die Autorisierungscodeanforderung ein und legen Sie den Wert auf force fest . "

so sollte Ihr Skript etwas aussehen

OAuth.popup('google', { 
    authorize: { 
     approval_prompt: 'force' 
    } 
}).then(function(google) { 
    console.log(google.refresh_token) 
    //send the refresh token to your server 
}) 

Wenn Sie arbeiten Client-Seite (Javascript/iOS/Android/Phonegap), können Sie auch die folgende Option muss möglicherweise aktivieren: Send refresh token to front-end im OAuth.io Armaturenbrett> Allgemein> erweiterte Option Ihre Client-Seite SDK zu ermöglichen, den Aktualisierungs-Token

https://jsfiddle.net/Lqyc5jpw/

abrufen