2016-01-22 12 views
5

Sto tentando di implementare Google Sign-in per le app lato server come mostrato nella documentazione di Google: Google Sign-In for server-side apps, ma la finestra di consenso non richiede mai l'accesso offline. Dopo aver selezionato un utente, si chiude e chiama la funzione di gestione degli accessi.API di accesso javascript di Google: no accesso offline

Di conseguenza, quando ottengo il codice unico e lo invii al server, non riesco a sostituirlo con un token di aggiornamento, solo per i token di accesso e ID.

Ecco il mio codice cliente:

Nel file HTML: codice

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

Javascript:

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 
    } 
} 

Il progetto in console Google contiene una credenziale client web con le origini javascript rilevanti e nessun URI di reindirizzamento autorizzato.

Cosa devo fare per forzare la finestra di consenso per chiedere l'accesso offline?

risposta

7

Sono in grado di forzare la richiesta offline, aggiungendo la chiamata di funzione 'approval_prompt' : 'force' al numero auth2.grantOfflineAccess.

E.g.

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

+0

Grazie Mael! Richiede infatti l'accesso offline ogni volta e ho il token di aggiornamento. – burgi

+0

Felice di vederlo funziona @burgi! Btw, sei in grado di concedere l'autenticazione incrementale con l'accesso lato server? Sono bloccato in questo problema: http://stackoverflow.com/questions/35023983/incremental-combined-authorization-with-google-signin-for-server-side-apps e ogni nuovo ambito che chiedo all'utente di autorizzare, il risultato del token sovrascrive i precedenti ambiti autorizzati ... – Mael

+0

Mi dispiace @Mael, non sto usando l'autenticazione incrementale. La mia logica aziendale richiede che tutte le autorizzazioni siano avanzate. – burgi