0

我正在使用 Facebooker2 创建一个 Facebook IFrame 应用程序,该应用程序在 Facebook 页面内作为选项卡运行。

我的目标是能够使用社交插件,例如点赞按钮和评论等。我尝试将它们定义如下

<div class="fb-like" data-href="http://www.myurl.com" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false"></div>

并尝试通过调用初始化 FB JS SDK

<%= fb_connect_async_js %>

哪个输出

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

        };

        (function() {
          var e = document.createElement('script'); e.async = true;
          e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
          document.getElementById('fb-root').appendChild(e);
        }());
      </script>

这之前一直有效,并且在大约一个月前 Facebook 推送了他们的最后一次平台更新后停止工作。现在根本没有渲染 Like 按钮。我也尝试了 XFBML 方法,没有运气。

注意:我可以使用 FB.publish 发布提要,还可以使用 IFrame 方法创建一个赞按钮。

我查看了文档,并没有看到任何地方提到社交插件不能在 IFrame 应用程序中使用。

有什么想法吗?

4

1 回答 1

0

我遇到了同样的问题,我能找到的唯一解决方法是设置一个计时器来执行 FB.XFBML.parse();

如果有人有更好的解决方案,我会很感激听到它!

window.fbAsyncInit = function() {    
setTimeout(function(){
    FB.XFBML.parse();
    FB.Event.subscribe('auth.login', function(response) {
        fbLogin();
    });

    FB.Event.subscribe('auth.logout', function(response) {
        fbLogout();
    });
    /* Additional initialization code here */
},
1000);
var params = {
    appId      : facebookAppId, 
    channelUrl : siteurl+'facebookChannelFile.php',
    status     : true, 
    cookie     : true, 
    oauth      : true,
    xfbml      : true
};
FB.init(params);
};
于 2012-01-25T13:17:27.173 回答