2014-04-18 12 views
5

Sto utilizzando l'accesso lato client per google +. Il token di accesso scade tra 1 ora. Chiamando gapi.auth.signOut() non si registra l'utente dopo che il token è scaduto. Sto cercando di autorizzare nuovamente l'utente se il suo token è scaduto chiamando lo gapi.auth.authorize con i parametri client_id, scope e immediate = true. Dopo aver chiamato questo metodo, gapi.auth.signOut() non funziona. Non sono in grado di capire perché è così.Errore di chiamata signout dopo gapi.auth.authorize

Ecco il codice:

var google = { 
    signOut: function() { 
     var token = gapi.auth.getToken(); 

     if(!token) { 
      var params = { 
       'client_id': global.clientid, 
       'session_state': global.sessionState, 
       'response_type':'token' 
      } 
      gapi.auth.checkSessionState(params, function(state){ 
       if(state == true) { 
        google.doSignOut(); 
       } else { 
        google.silentAuthorize(function(data){ 
         google.doSignOut(); 
        }); 
       } 
      }); 
     } else { 
      google.doSignOut(); 
     } 

    }, 

    doSignOut: function() { 
     gapi.auth.signOut(); 
     google.loggedin = false; 
    }, 

    silentAuthorize: function(callback) { 
     var params = {}; 
     params.client_id = global.clientid; 
     params.immediate = true; 
     params.scope = "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/plus.login" 

     gapi.auth.authorize(params, callback); 
    } 
} 

chiamando google.signOut funziona bene, mentre il token non è scaduto. Ma una volta che il token è scaduto o che semplice google.silentAuthorize call() con un callback, chiamando gapi.auth.signOut() inizia a generare un errore:

TypeError: Impossibile leggere proprietà 'clear' di null

State provando a capirlo per 4 ore, ogni aiuto è molto apprezzato!

risposta

0

Non sono riuscito a trovare comunque il rinnovo del token dal front-end, quindi sono passato al metodo ibrido di utilizzo di google auth. Ora rivivo la sessione ogni volta che sta per scadere all'interno di php.