2012-01-11 3 views
0

私はFacebooker2を使用してFacebookページ内のタブとして実行中のFacebook IFrameアプリケーションを作成しています。「Uncaught TypeError:Facebooker2を使用してFB.initを実行すると、 'undefinedのreplace'メソッドを呼び出すことができません。

私の目標は

<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を初期化しようとし、次のように私はそれらを定義しようとしたなど、などのようなボタンやコメントなどのソーシャルプラグインを使用できるようにすることです

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

これは前に働いていた、と後に動作を停止しましたが出力さ

<%= fb_connect_async_js %> 

Facebookは1ヶ月前に最後のプラットフォームアップデートをプッシュした。今すぐ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); 
}; 
関連する問題