2016-01-22 13 views
5

Ich versuche Google Sign-In für serverseitige Apps zu implementieren, wie in der Google-Dokumentation: Google Sign-In for server-side apps gezeigt, aber das Zustimmungsfenster fragt nie nach Offline-Zugriff. Nachdem ein Benutzer ausgewählt wurde, wird er geschlossen und ruft die Anmeldefunktion auf.Google JavaScript-Anmeldung api: Kein Offline-Zugriff

Als Ergebnis, wenn ich den einen Zeitcode und senden sie an den Server, kann ich tauschen es nicht für eine Refresh Token, nur für den Zugang und ID-Token.

Hier ist meine Kundennummer:

In der HTML-Datei:

<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script> 

Javascript-Code:

var auth2; 
function init() { 
    gapi.load('auth2', function() { 
     auth2 = gapi.auth2.init({ 
      client_id: '<my client id>.apps.googleusercontent.com', 
      scope: 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.appfolder' 
     }); 
    }); 
    $('#signinButton').click(function() { 
     auth2.grantOfflineAccess({'redirect_uri': 'postmessage'}).then(onSignIn); 
    }); 
} 

function onSignIn(authResult) { 
    if (authResult['code']) { 
    // Send the code to the server 
    } 
} 

Das Projekt in Google-Konsole einen Berechtigungsnachweis Web-Client enthält mit den relevanten Javascript-Ursprüngen und keinen autorisierten Weiterleitungs-URIs.

Was soll ich tun? erzwingen, dass das Zustimmungsfenster nach Offline-Zugriff fragt?

Antwort

7

Ich bin in der Lage, die Eingabeaufforderung für offline zu erzwingen, indem Sie den Parameter 'approval_prompt' : 'force' zu auth2.grantOfflineAccess Funktionsaufruf hinzufügen.

z.

auth2.grantOfflineAccess({'redirect_uri' : 'postmessage', 'approval_prompt' : 'force'}).then(onSignIn);

+0

Danke Mael! In der Tat fragt jedes Mal nach Offline-Zugriff und ich habe das Refresh-Token. – burgi

+0

Schön, dass es funktioniert @burgi! Btw, können Sie inkrementelle Authentifizierung mit der serverseitigen Anmeldung gewähren? Ich stecke in diesem Problem fest: http://StackOverflow.com/Questions/35023983/incremental-combined-authorization-with-google-signin-for-server-side-apps und jeden neuen Bereich, den ich Benutzer zu autorisieren, die Ergebnis-Token überschreibt die vorherigen autorisierten Bereiche ... – Mael

+0

Sorry @Mael, ich verwende keine inkrementelle Auth. Meine Geschäftslogik erfordert, alle Berechtigungen in Advanced zu erhalten. – burgi