2012-01-11 4 views
0

Я использую Facebooker2 для создания приложения IFrame Facebook, которое работает как вкладка на странице Facebook.получение «Uncaught TypeError: невозможно вызвать метод« replace »undefined» при выполнении FB.init с помощью Facebooker2

Моя цель состоит в том, чтобы иметь возможность использовать социальные плагины, такие как, как кнопки и комментарии, и т.д. Я попытался определить их следующим образом

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

любые идеи кто-нибудь?

ответ

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); 
};