我想使用fb在聊天室中登录我的用户。我的聊天框可以使用javascript与其他网站共享。
我想要做的是,当用户点击“FB登录”按钮时,它将打开一个fb登录窗口。然后用户将接受权限,然后..它将登录我的聊天室。
我的问题是,聊天框如何知道用户是否已登录?此登录的触发事件? 这样聊天框就会执行init();用于更改按钮 (更改登录按钮 - >注销按钮)..
我的方式是,首先,用户访问网站(其他网站使用我的聊天框使用javascript) - > chatbox run init()[显示聊天框名称,用户名,然后按钮登录的功能,如果用户在init()运行之前登录,则按钮是注销] - >如果用户登录,javascript将打开一个重定向到facebook登录链接的php文件 - >接受用户权限后,该按钮将自动从登录更改为注销。与注销相同。该按钮将从注销更改为登录
答案 0 :(得分:0)
在Javascript中,我知道有两种方法可以检查当前访问者是否已登录Facebook并已接受/未接受您的fb_app。
在这两种情况下,如果没有错误,将触发回调函数。
在这里检查response.status
是否存在,只是为了确保没有错误,它应该有三个可能的值:
response.status == "connected"
- 您的访问者已接受Facebook应用(并登录Facebook)response.status == "not_authorized"
- 您的访问者未接受Facebook应用(并登录Facebook)response.status == "unknow"
- 好吧,如果你的页面中的一切正常,那实际上意味着,你的访问者没有登录Facebook。如果您想要在首次浏览后访问Facebook,访问期间甚至可能在当前浏览器的其他标签页上,那么订阅auth.statusChange
也会非常有用。
无论如何,我建议使用Javascript调试器并进行不同的测试:连接,登录和未登录的用户。
在以下行中进行更新:
<!DOCTYPE html>
<html>
<head>
<meta charset="US-ASCII">
<title>test-facebook-login</title>
</head>
<body>
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : '1234567890', // App ID from the app dashboard
channelUrl : '//www.yoursitehere.com/channel.html',
status : true, // Check Facebook Login status
xfbml : true // Look for social plugins on the page
});
FB.Event.subscribe('auth.statusChange', function(response) {
if (window.console)
window.console.log(response);
});
/*
// On the other hand you could call this:
FB.getLoginStatus( function(response) {
if (window.console)
window.console.log(response);
});
*/
// Additional initialization code such as adding Event Listeners goes here
};
(function(){
if (document.getElementById('facebook-jssdk')) {return;}
var headElement = document.getElementsByTagName('head')[0];
var facebookJS = document.createElement('script');
facebookJS.id = 'facebook-jssdk';
facebookJS.src = '//connect.facebook.net/en_US/all.js';
headElement.parentNode.appendChild(facebookJS);
}());
</script>
</body>
</html>