2014-04-18 13 views
5

Ich benutze Client-Seite Login für Google +. Das Zugriffstoken läuft in 1 Stunde ab. Der Aufruf von gapi.auth.signOut() protokolliert den Benutzer nicht, nachdem das Token abgelaufen ist. Ich versuche, den Benutzer erneut zu autorisieren, wenn sein Token abgelaufen ist, indem ich gapi.auth.authorize mit client_id, Bereich und immediate = true Parameter aufrufen. Nach dem Aufruf dieser Methode funktioniert gapi.auth.signOut() nicht. Ich kann nicht verstehen, warum es so ist. HierFehler beim Abmelden nach gapi.auth.authorize

ist der Code:

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

Aufruf google.signOut funktioniert gut, während das Token nicht abgelaufen ist. Aber sobald das Token abgelaufen ist oder ich einfach Anruf google.silentAuthorize() mit einem Rückruf, ruft gapi.auth.signOut() beginnt zu werfen einen Fehler:

Typeerror: kann nicht lesen Eigenschaft ‚clear‘ von null

Sie haben versucht, dies für 4 Stunden jetzt herauszufinden, jede Hilfe wird sehr geschätzt!

Antwort

0

Ich konnte sowieso nicht finden, Token vom Frontend zu erneuern, also wechselte ich zur hybriden Methode, Google auth zu verwenden. Ich belebe die Sitzung jetzt jedes Mal neu, wenn sie innerhalb von PHP abläuft.