我想创建一个也可以使用FB登录的登录系统。所以我在我的页面中设置了FB对象和SDK,然后订阅了auth.authResponseChange
事件,并添加了一个匿名函数,如果我已经记录,没有记录或没有授权,那么就做了。
当我登录时,它可以正常工作。当我没有登录或未被授权时,它什么都不做。我认为它也不会进入匿名函数,因为我在if
之前放了一个console.log()而它什么也没做。
这是我的代码:
// Facebook stuff
window.fbAsyncInit = function()
{
FB.init({
appId : 'my id blabla', // App ID
channelUrl : 'my channel.html bla bla', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
FB.Event.subscribe('auth.authResponseChange', function(response)
{
console.log("Running function");
if(response.status === "connected")
{
console.log("Connected and authorized");
}
else if (response.status === 'not_authorized')
{
console.log("Not authorized");
}
else
{
console.log("Not connected");
}
});
};
// Load the SDK asynchronously
(function(d)
{
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
答案 0 :(得分:0)
我有同样的问题,但是如果您订阅事件'auth.statusChange'而不是'authResponseChange',那么你可以知道他是否已经'连接'到Facebook并授权你的应用程序或者他是否已连接到fb但未经授权。
此外,如果你使用facebook建议不要使用的FB.getLoginStatus,你可以知道用户所处的三种状态(connected,not_autorized或not_connected)中的哪一种。