【问题标题】:Error calling signout after gapi.auth.authorize在 gapi.auth.authorize 之后调用注销时出错
【发布时间】:2014-06-02 22:50:56
【问题描述】:

我正在使用 google+ 的客户端登录。访问令牌将在 1 小时后过期。令牌过期后调用gapi.auth.signOut() 不会注销用户。如果用户的令牌已过期,我正在尝试通过使用 client_id、范围和 immediate = true 参数调用 gapi.auth.authorize 来重新授权用户。调用此方法后,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:无法读取 null 的属性“clear”

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

【问题讨论】:

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


    【解决方案1】:

    我无论如何都找不到从前端更新令牌,所以我切换到使用 google auth 的混合方法。我现在每次在 php 中到期时都会恢复会话。

    【讨论】:

      猜你喜欢
      • 2022-08-16
      • 2021-03-21
      • 1970-01-01
      • 2016-03-07
      • 2023-03-20
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多