使用Facebooker2进行FB.init时获得"Uncaught TypeError: Cannot call method 'replace' of undefined"



我正在使用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推送了他们的最后一次平台更新后就停止了。现在根本没有渲染"点赞"按钮。我也尝试了XFBML方法,但没有成功。

注意:我可以使用FB.publish发布提要,也可以使用IFrame方法创建类似按钮。

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

有什么想法吗?

我遇到了同样的问题,我能找到的唯一解决办法是设置一个计时器来执行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);
};

相关内容

  • 没有找到相关文章

最新更新