Javascript FB.getLoginStatus返回';未知';注销后
完成时返回“未知”状态,10秒后返回延迟的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
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(),这反过来会删除用户的访问令牌,即使状态未知。希望这有帮助!(我对谷歌登录使用了相同的方法。我相信他们有一个使用自定义按钮登录的部分)