关于FB.Event.subscribe和FB.login

时间:2013-05-27 22:06:07

标签: php javascript facebook

首先感谢您的时间。我试图建立一个Facebook登录按钮的事件,重定向到一个总是在db中插入用户的PHP,如果已经存在只更新一些东西..

问题在于此步骤

  1. 我的状态是从Facebook&网站..我使用Facebook登录按钮登录,它要求我的Facebook凭据,如果我登录,它将我重定向到index.php?fbconnect = fbconnect哪个很好,并且我完全登录,在facebook&在我的网站!!

  2. 如果我退出,一切都很好....我只是从我的网站,而不是从Facebook

  3. 如果我已连接到Facebook,但未连接到我的网站,并点击“使用Facebook登录”,则不会发生重定向,因此用户永远不会登录,:(为什么?

  4. 我尝试过这3种不同的方法来重定向但是所有这些方法都像我之前提到的那样工作。

    这是一个解决方案我试图解决问题我评论here,如果我得到这个重定向一切都将是完美的。但遗憾的是它只能在第一次工作

       <script>
     window.fbAsyncInit = function() {
     FB.init({
     appId : <?=YOUR_APP_ID?>,
     status : true,
     cookie : true,
     xfbml : true,
     oauth : true,
     });
    
    
    
    FB.Event.subscribe('auth.login', function(response) {
     // ------------------------------------------------------
     // This is the callback if everything is ok
     window.location.href = 'http://www.page.com.mx/index.php?fbconnect=fbconnect';
    
     });
    
    
     FB.Event.subscribe('edge.create', function(response) {
      window.location.href = 'http://www.page.com.mx/index.php?fbconnect=fbconnect';
    });
    
     FB.login(function(response) {window.location.href = 'http://www.page.com.mx/index.php?fbconnect=fbconnect';
                  //...
               });
              };
    
    
    (function(d){
     var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     d.getElementsByTagName('head')[0].appendChild(js);
     }(document));
    </script>
    

1 个答案:

答案 0 :(得分:0)

假设我们在询问fb.getloginstatus(连接,not_authorized,不是'connected'或'not_authorized')时有3种可能的状态,我在我的app中测试了这个解决方案仅用于第一和第三状态,这是因为我的应用程序,当我退出时,我已从Facebook登出。无论如何,我从facebook文档中得到了所有这些东西。 我不知道我是否理解正确,但您正在搜索的事件,即登录触发的事件是:'auth.login',它全部写在facebook docs

所以,如果你想重定向用户,只是在他登录后,你应该以这种方式处理这些事情:

FB.Event.subscribe('auth.login',
    function(response) {
        alert('you just login, come with me');
        //redirect
    }
);

我将此代码放在此函数window.fbAsyncInit = function() {中,就在处理FB.Event.subscribe('auth.authResponseChange', function(response) {之前,但可能最好在auth.login之前处理auth.authResponseChange。

最后我想补充说,还有其他方法可以为每个会话收集一次用户数据