Facebookのコメントで作成したコメントをmysqlデータベースに保存するにはどうしたらいいですか?私は別のページのコメントを検索できるようにしたい。mysqlデータベースにfacebookのコメントを保存
答えて
あなたはあなたの壁、あなたのmysqlデータベースにアクセスするコメントなど、どこにコメントするのですか?
はそうならば、あなたはそれを行うには、いくつかの方法があります
<?php
// displays some comments for a certain url
$url = 'http://developers.facebook.com/docs/reference/fql/comment/';
// fql multiquery to fetch all the data we need to display in one go
$queries = array('q1' => 'select post_fbid, fromid, object_id, text, time from comment where object_id in (select comments_fbid from link_stat where url ="'.$url.'")',
'q2' => 'select post_fbid, fromid, object_id, text, time from comment where object_id in (select post_fbid from #q1)',
'q3' => 'select name, id, url, pic_square from profile where id in (select fromid from #q1) or id in (select fromid from #q2)',
);
// note format json-strings is necessary because 32-bit php sucks at decoding 64-bit ints :(
$result = json_decode(file_get_contents('http://api.facebook.com/restserver.php?format=json-strings&method=fql.multiquery&queries='.urlencode(json_encode($queries))));
$comments = $result[0]->fql_result_set;
$replies = $result[1]->fql_result_set;
$profiles = $result[2]->fql_result_set;
$profiles_by_id = array();
foreach ($profiles as $profile) {
$profiles_by_id[$profile->id] = $profile;
}
$replies_by_target = array();
foreach ($replies as $reply) {
$replies_by_target[$reply->object_id][] = $reply;
}
/**
* print a comment and author, given a comment passed in an an array of all profiles.
* @param object $comment as returned by q1 or q2 of the above fql queries
* @param array $profiles_by_id, a list of profiles returned by q3, keyed by profile id
* @returns string markup
*/
function pr_comment($comment, $profiles_by_id) {
$profile = $profiles_by_id[$comment->fromid];
$author_markup = '';
if ($profile) {
$author_markup =
'<span class="profile">'.
'<img src="'.$profile->pic_square.'" align=left />'.
'<a href="'.$profile->url.'" target="_blank">'.$profile->name.'</a>'.
'</span>';
}
return
$author_markup.
' ('.date('r', $comment->time).')'.
': '.
htmlspecialchars($comment->text);
}
print '<html><body>';
// print each comment
foreach ($comments as $comment) {
print
'<div style="overflow:hidden; margin: 5px;">'.
pr_comment($comment, $profiles_by_id).
'</div>';
// print each reply
if (!empty($replies_by_target[$comment->post_fbid])) {
foreach ($replies_by_target[$comment->post_fbid] as $reply) {
print
'<div style="overflow:hidden; margin: 5px 5px 5px 50px">'.
pr_comment($reply, $profiles_by_id).
'</div>';
}
}
}
?>
これはfbデータを取得します...ここからあなたはimprooveできます – Master345
FacebookのAPI(グラフAPI)を勉強する必要があります。
最初の方法は、一度にすべてのコメントを取得することです。新しいコメントを得るために定期的に行う必要があり、古いコメントをデータベースに複製しないでください。
これはあなたのページのURLをグラフAPIにアクセスすることによって達成することができます。
https://graph.facebook.com/comments/?ids=http://example.com/your_page
これはあなたが解析する必要がJSONのコメントを返します。多すぎる場合は、次のページのアドレスを示す「ページング」ハッシュがあります。
第2の方法は、新しいコメントを追跡してすぐに保存することです。これにより、重複した問題が再現されなくなります。これにはJavascript and Facebook js eventsが必要です。
FB.Event.subscribe('comment.create', function(response) {
var commentQuery = FB.Data.query('SELECT fromid, text FROM comment WHERE post_fbid=\'' + response.commentID + '\' AND object_id IN (SELECT comments_fbid FROM link_stat WHERE url=\'' + response.href + '\')');
FB.Data.waitOn([commentQuery], function() {
text = commentQuery.value[0].text;
// Use your preferred way to inform the server to save comment
$.post('http://example.com/comment', text)
});
});
以下の例では、クライアント側でコメントを取得しています。しかし、サーバー側でも行うことができます。
もちろん、FacebookのJavascriptライブラリを組み込み、あなたのサーバーに投稿アクション(http://example.com/comment)を実装する必要があります。
FB.Event.subscribe('comment.create',
function(response) {
onCommentCreate(response.commentID,response.href); //Handle URL on function to store on database
alert(response.href); //it gives you url
}
);
function onCommentCreate(commentID,href) {
$.ajax({
type: 'POST',
url: 'handlecomment.php',
data: {commentid:commentID,href:href},
success: function(result)
{
alert(result);
}
});
}
//hadlecomment.php
<?php
error_reporting(E_ERROR);
$commentid=$_POST['commentid'];
$url=$_POST['href'];
$pid=substr($url,strpos($url, 'comments')+8);
// Remember to copy files from the SDK's src/ directory to a
// directory in your application on the server, such as php-sdk/
require_once('php-sdk/facebook.php');
$config = array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
);
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
$accesstoken=$facebook->getAccessToken();
if($user_id) {
// We have a user ID, so probably a logged in user.
// If not, we'll get an exception, which we handle below.
try {
$facebook->setAccessToken($accesstoken);
$fql = 'SELECT text from comment where id = ' . $commentid;
$ret_obj = $facebook->api(array(
'method' => 'fql.query',
'query' => $fql,));
$comment= $ret_obj[0]['text'] ;
$insert_comment="insert into comments(pid,comment) values($pid,$comment)";
mysql_query($insert_comment);
} catch(FacebookApiException $e) {
// If the user is logged out, you can have a
// user ID even though the access token is invalid.
// In this case, we'll get an exception, so we'll
// just ask the user to login again here.
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
error_log($e->getType());
error_log($e->getMessage());
}
} else {
// No user, so print a link for the user to login
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
}
?>
?>
//YOu need to set data-href of comment should be look like this...
//i am using more comments on my website so i looped through to add comment
while($result=mysql_fetch_assoc(mysql_query($query)))
{
$pic_id=$result['pic_id']; // i have saved unique pic id in my database for all images so i am
//retrieving that here
<div class="fb-comments" style=' position:relative;left:55px;top:10px;' data-href="<?php echo 'http://www.lpuphotography.edulogics.in/votography.php/comments' . $pic_id; ?>" data-width="470" data-num-posts="2"></div>
}
//if you are using single comment
<div class="fb-comments" style=' position:relative;left:55px;top:10px;' data-href="<?php echo 'http://www.lpuphotography.edulogics.in/votography.php/comments101' ?>" data-width="470" data-num-posts="2"></div>
//101 is comment id , u can set what ever you want
また、それは良い答えを追加してください。 – Szymon
- 1. Facebookのコメント数をMysqlデータベースに保存するには?
- 2. Facebook PHP SDK - ユーザーデータをMYSqlデータベースに保存
- 3. PHPデータベースをmysqlデータベースに保存する
- 4. データベースにMySQLクエリを保存する(MySQL)
- 5. Pythonがmysqlデータベースに保存
- 6. Facebook情報をMysqlに保存
- 7. AngularとIonicを使ってFacebookのユーザーデータをMySqlデータベースに保存する方法
- 8. グラフをMySQLデータベースに保存する
- 9. blobファイルをmysqlデータベースに保存する
- 10. jQueryドラッグアンドドロップ - 位置をMysQLデータベースに保存
- 11. jsonをmysqlデータベースに保存する
- 12. MySQLデータベースに歌詞を保存する
- 13. 円をMySQL GeoSpatialデータベースに保存
- 14. PHP - ダイナミックフィールドをMySQLデータベースに保存する
- 15. MySQLデータベースにキャンバスを保存する
- 16. データベース/ MySQLにメーリングリストを保存する
- 17. PHP - MySQLデータベースにテキストを保存する
- 18. MySQLデータベースにおけるBLOBの保存
- 19. データベースにユーザーのコメント形式を保存する
- 20. プレイヤーのコメント欄に保存
- 21. mysqlデータベースへのgoogleフォームレスポンスを保存
- 22. コードワードプレス、MySQLデータベースに保存するプラグイン
- 23. Facebookに保存してPHPデータベースに保存するようにしました
- 24. ユーザーへのコメントの保存?
- 25. FBのコメントをローカルデータベースに保存する
- 26. facebook profile picをデータベースに保存するには?
- 27. ユーザーのコメントを格納するMySQLデータベース
- 28. データベースに保存
- 29. phpmyadminで大量のデータをMySQLデータベースに保存するには?
- 30. mySQLデータベースにワトソンの会話履歴を保存するには?
すみませんでした。私は自分のサイトのページにFacebookのコメントを入れ、自分のサイトのコメントを検索したい。私はFacebookのAPIを見て、私のウェブサイト上のページにコメントのグラフを表示することはできますが、グラフのデータの使用方法やアクセス方法は見当たりませんでした。 – cbr0wn
だから、あなたはfacebook.com/pageidページを持っていると分かっています。そのFacebookページのコメントはwww.yoursite.comから検索できます。もしそうなら、私は本当にそれを行う方法はわかりませんが、Graph APIを使用してfbページからデータベースにすべてのコメントを取得し、最初にFB Appを作成する必要があります。 – Master345
申し訳ありませんが私はより良く説明しましょう。私はFacebookのコメントiframeを持って私は自分のサーバー上のページがあります。私はすでにFacebookのアプリを作った。私は画面上のコメントのグラフデータを表示することができますが、私はそれらを保存するか変数に格納するか、スクリーン上にテキストを表示するだけの便利な方法はわかりません。 – cbr0wn