在gapi.auth.authorize之后调用signout时出错

shi*_*.ja 5 google-authentication google-plus google-oauth

我正在使用客户端登录谷歌+.访问令牌在1小时后到期.gapi.auth.signOut()令牌过期后,呼叫不会将用户注销.我试图通过调用gapi.auth.authorizeclient_id,scope和immediate = trueparameters 来重新授权用户,如果他的令牌已经过期.调用此方法后,gapi.auth.signOut()无法正常工作.我无法理解为什么会这样.

这是代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在令牌未过期时调用google.signOut正常工作.但是一旦令牌过期或者我用回调调用google.silentAuthorize(),调用gapi.auth.signOut()就会开始抛出错误:

TypeError:无法读取null的属性'clear'

一直试图解决这个问题4小时,任何帮助都非常感谢!

shi*_*.ja 0

无论如何,我找不到从前端更新令牌的方法,所以我切换到使用谷歌身份验证的混合方法。现在,每次会话在 php 中即将过期时,我都会恢复该会话。