0

Facebooker2 を使用して、Facebook ページ内のタブとして実行される Facebook IFrame アプリケーションを作成しています。

私の目標は、いいねボタンやコメントなどのソーシャルプラグインを使用できるようにすることです。次のように定義しようとしました

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

これは以前は機能していましたが、約 1 か月前に 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 に答える