打开fb登录的新窗口

时间:2013-11-15 13:56:04

标签: javascript php login logout

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

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

我的问题是,聊天框如何知道用户是否已登录?此登录的触发事件? 这样聊天框就会执行init();用于更改按钮 (更改登录按钮 - >注销按钮)..

我的方式是,首先,用户访问网站(其他网站使用我的聊天框使用javascript) - > chatbox run init()[显示聊天框名称,用户名,然后按钮登录的功能,如果用户在init()运行之前登录,则按钮是注销] - >如果用户登录,javascript将打开一个重定向到facebook登录链接的php文件 - >接受用户权限后,该按钮将自动从登录更改为注销。与注销相同。该按钮将从注销更改为登录

1 个答案:

答案 0 :(得分:0)

在Javascript中,我知道有两种方法可以检查当前访问者是否已登录Facebook并已接受/未接受您的fb_app。

  1. 使用FB.init({status:true})参数加载页面并订阅auth.statusChange事件。
  2. 页面加载后,甚至是异步,使用FB.getLoginStatus
  3. 在这两种情况下,如果没有错误,将触发回调函数。 在这里检查response.status是否存在,只是为了确保没有错误,它应该有三个可能的值:

    1. response.status == "connected" - 您的访问者已接受Facebook应用(并登录Facebook)
    2. response.status == "not_authorized" - 您的访问者未接受Facebook应用(并登录Facebook)
    3. response.status == "unknow" - 好吧,如果你的页面中的一切正常,那实际上意味着,你的访问者没有登录Facebook。
    4. 如果您想要在首次浏览后访问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>