個人的には、Facebook Graph API が少し不十分であると感じることがあります。たとえば、現在の要件で、Graph API のみを使用する必要がある場合は、最初に、特定の投稿を気に入ったすべてのユーザーのリストを取得する必要があります。リストを取得したら、ユーザー ID がログインしているユーザーの ID と一致するかどうかを確認し、その結果に基づいて関数などを実行する必要があります。
代わりに、FQL はより単純な機能を提供します。私のアプリでは、まったく同じ機能のために、FQL のみを使用しています。
簡単なクエリを起動できます。例えば:
SELECT likes.user_likes FROM stream WHERE post_id ='XXXXXXXXXXXXX_XXXXXXXXX'
X を投稿の ID に置き換えます。投稿 ID を「YOUR_POST_ID」で囲んでください。
Graph API Explorer で次のように試してください。fql?q=SELECT likes.user_likes FROM stream WHERE post_id = 'ENTER_YOUR_POST_ID'
クエリを実行すると、次のような結果が得られるはずです。
{
"data": [
{
"likes": {
"user_likes": true
}
}
]
}
ユーザーが投稿を気に入った場合、フィールドuser_likes
はtrueになり、ユーザーが投稿を気に入らなかった場合はfalseになります。
次のように結果を解析できます (疑似コード):
if (JOLikeStatus.has("likes")) {
JSONObject optLikes = JOLikeStatus.optJSONObject("likes");
if (optLikes.has("user_likes")) {
String getUserLikes = optLikes.getString("user_likes");
if (getUserLikes.equals("true")) {
String getLikeStatus = "true";
} else if (getUserLikes.equals("false")) {
String getLikeStatus = "false";
}
} else {
String getLikeStatus = null;
}
} else {
String getLikeStatus = null;
}
編集 2:いいね! の合計数 (カウント) を取得するには、前のクエリを次のように変更します。
fql?q=SELECT likes.user_likes, likes.count FROM stream WHERE post_id = 'ENTER_YOUR_POST_ID'