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

Posted

技术标签:

【中文标题】在 gapi.auth.authorize 之后调用注销时出错【英文标题】:Error calling signout after 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 小时,非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于在 gapi.auth.authorize 之后调用注销时出错的主要内容,如果未能解决你的问题,请参考以下文章

传奇为啥我给自己调级之后画面会卡死?

同步/异步-阻塞/非阻塞

Centos6.6安装之后调优

echarts geo世界地图,汉化之后部分国家名称显示的位置不对,这个该怎么调?

如何使用 python 使用 discord.py 创建调平系统?

一次述职之后的反省