Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript FB.getLoginStatus返回';未知';注销后_Javascript_Facebook Javascript Sdk - Fatal编程技术网

Javascript FB.getLoginStatus返回';未知';注销后

Javascript FB.getLoginStatus返回';未知';注销后,javascript,facebook-javascript-sdk,Javascript,Facebook Javascript Sdk,完成时返回“未知”状态,10秒后返回延迟的FB.getLoginStatus()。有人能告诉我我做错了什么吗?控制台语句是打印的,因此角度函数是无关的 if (angular.element(document.getElementById('logout-button')).scope().userDetails.facebookUser) { FB.logout(function(response) { console.log(response); s

完成时返回“未知”状态,10秒后返回延迟的FB.getLoginStatus()。有人能告诉我我做错了什么吗?控制台语句是打印的,因此角度函数是无关的

if (angular.element(document.getElementById('logout-button')).scope().userDetails.facebookUser) {

    FB.logout(function(response) {
        console.log(response);
        setTimeout(function () {
            FB.getLoginStatus(function(response1) {
                console.log(response1);
                console.log("checking login status");
                angular.element(document.getElementById('logout-button')).scope().logout();
            })
        }, 10000)
    });

}

这是因为浏览器将注销的会话存储到cookie中。 在注销方法的回调中使用以下代码段

FB.logout(function(response) {
    document.cookie.split(";").forEach(function(c) {
        document.cookie = c.
            replace(/^ +/, "").
            replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";domain=localhost;path=/");
    });
});

用您的域名替换
localhost

控制台打印什么?它应该打印什么?在两个控制台语句中都应该是状态为:disconnected或status:not_authorized的对象。相反,它们都打印出状态:未知。问题是我将用户重定向回登录页面,除非用户正确注销,否则FB登录按钮不会出现。这让我发疯!@PrajeethEmanuel?@manonthemon状态:只有当FB用户从未验证过你的应用程序时,才会返回not_authorized。状态:当FB用户注销您的应用程序或FB时,返回unknown。我通过创建一个自定义登录按钮并仅在用户没有访问令牌时调用FB.login()解决了这个问题。其他页面上的注销按钮调用FB.logout(),这反过来会删除用户的访问令牌,即使状态未知。希望这有帮助!(我对谷歌登录使用了相同的方法。我相信他们有一个使用自定义按钮登录的部分)