получение "Uncaught TypeError: Невозможно вызвать метод replace" of undefined "при выполнении FB.init с использованием Facebooker2 - PullRequest
0 голосов
/ 11 января 2012

Я использую 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.

есть идеи у кого-нибудь?

1 Ответ

0 голосов
/ 25 января 2012

Я столкнулся с той же проблемой, и единственный обходной путь, который я смог найти, - это установить таймер для выполнения 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);
};
...