Facebook php-sdkから、特定のapp_idからのみの特定の投稿を「いいね」した友達のリストを抽出したいと思います。例を挙げましょう。www.rottentomatoes.comにアクセスすると、[友達/友達]セクションで、どの映画にもレビュー/評論家を書いたすべての友達を見ることができます。
FQLはこれを行うための優れたクリーンな方法だと思いましたが、実際にはそうではありません。データの処理に時間がかかりすぎるため、オンラインアプリの準備ができているとは思えません。
これは私がこれまでに思いついたコードでした:
function cmp($a, $b)
{
if ($a["like"] == $b["like"]) {
return 0;
}
return ($a["like"] > $b["like"]) ? -1 : 1;
}
try
{
$fql = 'SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1='.$uid.') AND has_added_app = 1';
$_friends = $facebook->api(array('method' => 'fql.query','query' => $fql));
}
catch(FacebookApiException $e)
{
print_r($e);
error_log($e->getType());
}
// Extract the user ID's returned in the FQL request into a new array.
$likes = array();
if (is_array($_friends) && count($_friends) > 0)
{
foreach ($_friends as $friend)
{
$fid = $friend["uid"];
try
{
$fql = 'SELECT url FROM url_like WHERE user_id = '.$fid.' AND strpos(lower(url),"muchogusto") >=0';
$_likes = $facebook->api(array('method' => 'fql.query','query' => $fql));
$likes[] = array("uid" => $fid, "like" => count($_likes));
}
catch(FacebookApiException $e)
{
$likes[] = array("uid" => $fid, "like" => 0);
continue;
error_log($e->getType());
}
}
}
usort($likes, "cmp");
print_r($likes);
私にはたくさんの質問があります、そして私はかなり初心者なので、あなたがこれで私を助けることができると確信しています。
誰かがFQLなしでこれをコーディングするのを手伝ってくれませんか?私はこれだけが必要です:
- 私の友達のリスト
- のみが掲載されている特定の投稿のいいねの数
- 特定のAPP_ID
どうもありがとうございました。