2014-04-18 25 views
5

我正在使用客戶端登錄谷歌+。訪問令牌在1小時後過期。在令牌過期後調用gapi.auth.signOut()不會將用戶註銷。我試圖通過調用gapi.auth.authorize與client_id,scope和immediate = true參數來重新授權用戶,如果他的令牌已過期。調用此方法後,gapi.auth.signOut()不起作用。我無法理解爲什麼。gapi.auth.authorize之後呼叫註銷錯誤

下面是代碼:

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

調用google.signOut正常工作,而令牌還沒有到期。但是,一旦令牌已經與一個回調過期或者我簡單的調用google.silentAuthorize()調用gapi.auth.signOut()開始拋出一個錯誤:

類型錯誤:無法讀取屬性空的「清除」

一直試圖找出現在4個小時,任何幫助是高度讚賞!

回答

0

我無法找到從前端更新令牌,所以我切換到混合使用谷歌身份驗證的方法。我現在每次在PHP中過期時都會恢復會話。