#xfbml = 1导致问题

时间:2011-01-14 20:42:28

标签: javascript facebook fbml xfbml

我的网站上有两种不同的机制,使用xfbml和fbjs:

  • 一个FB:喜欢个别条目的标签
  • 使用fb connect登录facebook的FB对象

我的问题是当我在页面上包含“all.js”时,登录脚本有效,但fb:like标签不起作用。

当我包含“all.js #xfbml = 1”时,fb:like标签再次起作用,但现在我的FB对象未定义且我的登录代码不起作用。

我有什么遗失的吗?

提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:1)

您只需要包含脚本引用一次,并在加载页面时在脚本上调用init。您可以将它用于fb:like按钮或登录脚本。

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({
    appId  : 'YOUR APP ID',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
  });
</script>

关键是将xfbml设置为true(这是#xfbml = 1的作用)。如果你没有那套,那么类似的按钮就不会呈现。

如果您想订阅登录事件,只需在FB.init()调用后添加以下脚本:

  FB.Event.subscribe('auth.login', function(response) {
    window.location.reload(); // or something else...
  });

只有当用户点击链接,按钮等时才会触发您的登录脚本。

function doLogin() {
   FB.login(function(response) {
     if (response.session) {
       if (response.perms) {
         // user is logged in and granted some permissions.
         // perms is a comma separated list of granted permissions
       } else {
         // user is logged in, but did not grant any permissions
       }
     } else {
       // user is not logged in
     }
   }, {perms:'read_stream,publish_stream,offline_access'});
}

答案 1 :(得分:0)

将此xmlns添加到您的html标记

xmlns:fb="http://www.facebook.com/2008/fbml"

并包含“all.js”