我将Facebook登录整合到我的应用程序/网站并使用Facebook的标准Javascript代码:https://developers.facebook.com/docs/facebook-login/web
首次使用时,在授予网站基本权限后,一切正常,登录正常,statusChangedCallback()函数返回:
Object {status: "connected", authResponse: Object}
但是,使用以下命令执行注销:
function logout()
{
FB.logout(function(){document.location.reload();});
}
......似乎无法恢复/破坏应用程序。
每次后续登录尝试都会返回:
Object {authResponse: null, status: "unknown"}
我已尝试以下操作无效。
我已经确定了导致问题的退出呼叫,因为让它再次运行的唯一方法是通过Facebook开发者控制台删除应用程序并创建一个带有新应用ID的新应用
以前有人见过这种行为吗?
答案 0 :(得分:4)
有一个名为" fblo _ *"的cookie。在FB.logout()之后创建,这似乎就是这个原因。我不能确切地说出它为什么以及它的作用,但删除它会使登录再次起作用。
因此我创建了一个小脚本来查找这个cookie并在我调用FB.login()之前将其删除,你甚至可以通过点击来调用它(https://developers.facebook.com/docs/reference/javascript/FB.login/v2.5)。
function delete_cookie(name)
{
document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/';
}
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
{
if(cookies[i].split("=")[0].indexOf("fblo_") != -1)
delete_cookie(cookies[i].split("=")[0]);
}
答案 1 :(得分:0)
如上所述,调用以下函数似乎错误地指示我认为存在问题:
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
这会重复以下内容:
Object {authResponse: null, status: "unknown"}
但是,如果我改为使用:
FB.login(function(response) {
}
我可以在注销后登录,更重要的是可以访问从facebook返回的用户ID来识别用户。