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

时间:2014-04-18 12:15:51

标签: google-plus google-oauth google-authentication

我正在使用客户端登录google +。访问令牌在1小时后到期。在令牌过期后,调用gapi.auth.signOut()不会将用户注销。我正在尝试通过使用client_id,scope和gapi.auth.authorize参数调用immediate = true来重新授权用户,如果他的令牌已过期。调用此方法后,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);
    }
}

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

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

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

1 个答案:

答案 0 :(得分:0)

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

相关问题