1

首先感谢您的时间。我正在尝试为 facebook 登录按钮构建一个事件,以重定向到始终将用户插入数据库的 PHP,如果已经存在,只需更新一些东西..

问题是按照这个步骤

  1. 我的状态已从 facebook 和网站注销.. 我使用 facebook 登录按钮登录,它要求我的 facebook 凭据,如果我登录,它会将我重定向到 index.php?fbconnect=fbconnect,这很棒,而且我完美登录,在脸书和我的网站上!!

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

  3. 如果我连接到 facebook,但没有连接到我的网站,然后单击“使用 facebook 登录”,则不会发生重定向,因此用户永远不会登录,:( 为什么?

我已经尝试了这 3 种不同的重定向方法,但它们都像我之前提到的那样工作。

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

   <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>
4

1 回答 1

0

假设我们在询问 fb.getloginstatus 时有 3 种可能的状态(已连接、未授权、未“连接”或“未授权”),我在我的应用程序中仅针对第一个和第三个状态测试了此解决方案,这是因为在我的应用程序中,当我注销时,我已从 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。

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

于 2013-05-30T21:25:19.633 回答