2011-10-06 73 views
1

我已登录Facebook在我的网站上。我正在使用JS-SDK,加上PHP-SDK。Facebook登录按钮不会触发页面刷新,FB.Event.subscribe似乎没有注册

我99.9%确定我在正确的地方拥有所有正确的文件,因为实际的登录工作。然而,一旦用户登录后,我无法让页面重新启动。

这是Facebook登录按钮代码('Scope'是新的'烫发',因为我今天才发现):

<fb:login-button scope="email,user_birthday">Sign In</fb:login-button> 

一旦用户授权等,关闭对话框,但然后什么也没有发生。用户尚未登录,页面不会重新加载。

当我手动重新加载,用户登录

这是代码我在我的页脚应该监听登录:

<script> 
    FB.Event.subscribe('auth.login', function(response) { 
     window.location.reload(); 
    }); 
</script> 

在我的Chrome开发者工具JS控制台,我收到一个错误,说“未捕获的引用:FB未定义”。即使在单击Facebook登录按钮之前,页面加载时也会出现此错误。

任何想法,我可能做错了什么?谢谢!

回答

0

我发现将应用程序秘密传递给auth.login调用会导致事件正确触发。您可以通过从PHP应用秘密的JavaScript函数,就像这样:

<script> 
    FB.Event.subscribe('auth.login', function(response) { 
     window.location.reload(); 
    }, secret: '<?php print $facebook->getApiSecret(); ?>'); 
</script> 

这已被修复被Facebook。

+0

谢谢,我会试试这个,让你知道! 虽然可能存在问题:不会透过我的源代码查看任何人的密码吗? – Erik

+0

无论如何,这对我来说并不起作用,我检查了我的来源,这个秘密对每个人都是清楚可见的。我不喜欢那样。 – Erik

+0

它会,但我相信秘密是绑定到您在应用程序设置中指定的域。我不知道为什么Facebook会以其他方式暴露函数getApiSecret();在PHP SDK中。 –