私は、MVCアプリケーションでFacebookのコメントボックスを表示したい部分的なビューを持っています。また、ユーザーが投稿したコメントごとにデータベースに情報を保存したいと思います。はい、私はFacebookでも表示されていますが、データベースに保存する必要があります。FB.Event.subscribeを介してcomment.createまたはcomment.removeに登録されたメソッドはトリガーされません
このコードを書きました(注意:これは私が部分的に見たコードです。読みやすくするために分割しました。また、正しく挿入されています)。
ただ、上記のコード以下function trackcomments(_commentid, _address, _action,
_commentMessage, _userName, _userId)
{
$.ajax({
type: 'POST',
url: '/trackcomments',
data:
{
commentId: _commentid,
pageUrl: _address,
actionTaken: _action,
userName: _userName,
userId: _userId,
commentMessage: _commentMessage
},
success: function (result)
{
console.log("successfully received callback");
}
});
}
</script>
やFacebookのコメントタグ:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<div id="fb-root">
</div>
<script type="text/javascript">
window.fbAsyncInit = function()
{
FB.init({ appId: 'MY_APP_KEY', status: true, cookie: true, xfbml: true }); console.log('fb init');
FB.Event.subscribe('comment.create',
function (response)
{
console.log("comment created");
var commentQuery = FB.Data.query("SELECT text, fromid FROM comment WHERE post_fbid='" + response.commentID +
"' AND object_id IN (SELECT comments_fbid FROM link_stat WHERE url='" + response.href + "')");
var userQuery = FB.Data.query("SELECT name FROM user WHERE uid in (select fromid from {0})", commentQuery);
FB.Data.waitOn([commentQuery, userQuery], function()
{
var commentRow = commentQuery.value[0];
var userRow = userQuery.value[0];
console.log(userRow.name + " (id: " + commentRow.fromid + ") posted the comment: " + commentRow.text);
trackcomments(response['commentID'], response['href'], 'create', commentRow.text, userRow.name, commentRow.fromid);
});
});
FB.Event.subscribe('comment.remove',
function (response)
{
console.log("comment removed");
trackcomments(response['commentID'], response['href'], 'remove', null, null, null);
});
};
(function()
{
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js#xfbml=1';
e.async = true; document.getElementById('fb-root').appendChild(e);
}()
);
trackcomments機能
<fb:comments notify="true" href="<%= Request.Url.ToString() %>" num_posts="3" width="630"></fb:comments>
問題は、コメントが投稿(または削除)されるたびに、関数がトリガしないことです。私が見るコンソールログの唯一のテキストは "fb init"です。明らかに、サーバ上でも何も起こりません。
私は過去2日間私の頭を掻いてきましたが、私は答えを見つけられないようです - 私は正しい方向に私を向けることができる人にはとても感謝しています。
ありがとうございました!
FBコードがwindow.fbAsyncInitブロックにすでにある... –
うーん何の問題私の悪い申し訳ありませんが、アイデアそうです。 2 FB.initが同じページでトリガーされたイベント、良いインスタンスに送信されなかったイベントなどがありましたが、ここで原因とは思われません。 – Olivier