• 締切済み

FacebookのCommentsについて

Facebookのapi(JavaScript)にてFacebookページのウォールを取得し、各投稿ごとに動的にIDを付加したCommentsプラグインを表示したいと思っています。 下記要領で実行すると、htmlは正しく挿入されている(Firebugにて確認)のですが、Commentsが読み込まれません。 同じファイル内でgetWall関数外に静的にHTMLを記述するとCommentsは表示されます。 どうすれば動的に識別子を付加したCommentsを表示させることができますでしょうか? <!-- SDK読み込み --> <div id="fb-root"></div> <script>(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <script>   function getWall() {     FB.api(       '/ -- ID -- /feed',       { access_token: ' -- 取得したアクセストークン -- ' },       function(response) {         // 取得後のコールバック         var contents = '';         for (var i = 0; i < response.data.length; i++) {           if(response.data[i]['message']){             contents += "<div class='topic_block' id='topic_" + response.data[i]['id'] + "'\>";             contents += response.data[i]['message'];             contents += "</div>";             contents += "<div class='fb-comments' data-href=' -- パーマリンク等、投稿毎の識別子 -- ' data-num-posts='10' data-width='470'></div>";             contents += "</div>";           */           }         }                     // ウォールの内容を表示させる         document.getElementById('topics').innerHTML = contents;       });   }      window.fbAsyncInit = function() {     getWall();   }; </script> <div id='topics'></div>

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

api自体を知らないので、内容はわかりませんが、 とりあえず、後半のスクリプトで 1)「( )」、「{ }」の対応関係がおかしい(数が合わない) 2)「*/」が単独で存在する 3)「内容表示部分」が(多分)コールバックの外側にある あたりが、おかしくないですか?

dobbats_go
質問者

お礼

contents += "<div class='fb-comments' data-href=' --識別子-- ' data-num-posts='10' data-width='470'></div>"; の後で FB.initする事で解決しました。 ありがとうございました。

dobbats_go
質問者

補足

回答ありがとうございます。 表示幅の関係で括弧の対応関係がわかりにくいみたいですね。 こちら http://qa.itmedia.co.jp/qa7480902.html で見るとわかりやすいかもしれません。 */はこちらにコピーする為に無駄なものをカットした際の消し忘れでした。 下に修正バージョンを貼付けます。 内容表示部がコールバックの内にあることを確認して頂けると思います。 これで一応、ウォールの取得はできています。 このままapiでコメント書き込みまでできれば良いのですが、どうやらできるのは記事の投稿までのようですので、commentsプラグインで対応しようとしている次第です。 <!-- SDK読み込み --> <div id="fb-root"></div> <script>(function(d, s, id) {  var js, fjs = d.getElementsByTagName(s)[0];  if (d.getElementById(id)) return;  js = d.createElement(s); js.id = id;  js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1";  fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> <script>   function getWall() {     FB.api('/ -- ID -- /feed',{ access_token: ' -- 取得したアクセストークン -- ' },       function(response) {         // 取得後のコールバック         var contents = '';         for (var i = 0; i < response.data.length; i++) {           if(response.data[i]['message']){             contents += "<div class='topic_block' id='topic_" + response.data[i]['id'] + "'\>";             contents += response.data[i]['message'];             contents += "</div>";             contents += "<div class='fb-comments' data-href=' -- パーマリンク等、投稿毎の識別子 -- ' data-num-posts='10' data-width='470'></div>";           }         }                     // ウォールの内容を表示させる         document.getElementById('topics').innerHTML = contents;       });   }      window.fbAsyncInit = function() {     getWall();   }; </script> <div id='topics'></div>