Javascript 打开新窗口进行fb登录

Javascript 打开新窗口进行fb登录,javascript,php,login,logout,Javascript,Php,Login,Logout,我想使用fb在我的聊天室中登录我的用户。我的聊天室是一个可与其他使用javascript的网站共享的聊天室 我想做的是,当一个用户点击一个按钮“FB登录”,它会打开一个窗口FB登录。然后用户将接受权限,然后。。这将是登录到我的聊天室 我的问题是,聊天室如何知道用户是否登录?此登录的触发事件? 因此聊天室将执行init();换一下按钮 (更改登录按钮-->注销按钮) 我的方法是,首先,用户访问一个网站(使用javascript访问我的聊天室的其他网站)--->chatbox run init()[

我想使用fb在我的聊天室中登录我的用户。我的聊天室是一个可与其他使用javascript的网站共享的聊天室

我想做的是,当一个用户点击一个按钮“FB登录”,它会打开一个窗口FB登录。然后用户将接受权限,然后。。这将是登录到我的聊天室

我的问题是,聊天室如何知道用户是否登录?此登录的触发事件? 因此聊天室将执行init();换一下按钮 (更改登录按钮-->注销按钮)


我的方法是,首先,用户访问一个网站(使用javascript访问我的聊天室的其他网站)--->chatbox run init()[一个显示聊天室名称、用户名的函数,然后是登录按钮,如果用户在运行init()之前登录,则按钮是注销]->如果用户登录,javascript将打开一个php文件,该文件重定向到facebook登录-->用户权限已接受的链接,该按钮将自动从登录更改为注销。。与注销相同。在Javascript中,按钮将从注销变为登录。我知道有两种方法可以检查当前访问者是否登录到Facebook,是否接受/未接受你的FBU应用程序

  • 在页面加载时使用({status:true})参数并订阅事件
  • 页面加载后,即使是异步加载,也可以使用
  • 在这两种情况下,如果没有错误,将触发回调函数。 这里检查
    response.status
    是否存在,只是为了确保仍然没有错误,它应该有三个可能的值:

  • response.status==“已连接”
    -您的访问者已接受Facebook应用程序(并已登录Facebook)
  • response.status==“未授权”
    -您的访问者尚未接受Facebook应用程序(并已登录Facebook)
  • response.status==“unknow”
    -如果你的页面一切正常,这实际上意味着你的访问者没有登录Facebook
  • 订阅
    auth.statusChange
    也很有用,如果您想捕获在第一页查看之后、访问期间甚至在当前浏览器的不同选项卡上登录Facebook的访问者

    在任何情况下,我建议使用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> 
    
    
    测试facebook登录
    window.fbAsyninit=函数(){
    //初始化FBJSSDK
    FB.init({
    appId:'1234567890',//应用程序仪表板中的应用程序ID
    channelUrl:'//www.yoursitehere.com/channel.html',
    状态:true,//检查Facebook登录状态
    xfbml:true//在页面上查找社交插件
    });
    FB.Event.subscribe('auth.statusChange',函数(响应){
    if(window.console)
    window.console.log(响应);
    });
    /*
    //另一方面,你可以称之为:
    FB.getLoginStatus(函数(响应){
    if(window.console)
    window.console.log(响应);
    });
    */
    //附加的初始化代码(如添加事件侦听器)如下所示
    };
    (功能(){
    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);
    }());
    
    如果用户访问该页面但未登录,将显示登录链接。如果他/她单击登录(页面加载后),它将记录(响应)?是否使用了FB.Event.subscribe('auth.statusChange',function(response){if(window.console)window.console.log(response);});auth.statusChange用于正确识别用户是否登录Facebook,即使用户已登录并已接受您的FB应用程序