3

fqlクエリを使用してjson応答を取得しようとしましたが、これを行うためにこのコードを使用しました

   String postid=jsonObject.getString("id");

   String query = "SELECT likes.user_likes FROM stream WHERE post_id = \'" + postid + "'";

    Bundle params = new Bundle();
   params.putString("method", "fql.query");
    params.putString("query", query);

   String fqlResponse = Utility.mFacebook.request(params);

   System.out.println(fqlResponse);

しかし、Utility.mFacebook.request(params);でnullポインター例外が発生しています。

Githubでデフォルトのクラスを使用しています

4

1 に答える 1

3

個人的には、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_likestrueになり、ユーザーが投稿を気に入らなかった場合は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'

于 2012-11-22T14:59:36.897 に答える