2012-11-22 20 views
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);

我使用的是默認的類在Github上

回答

3

我個人覺得Facebook的圖形API有時有點不足。例如,在您當前的要求中,如果您只需要使用Graph API,則需要首先獲取所有喜歡特定帖子的用戶的列表。在列表後,您必須檢查用戶ID是否與登錄用戶的用戶ID相匹配,然後根據結果運行函數或其他內容。

相反,FQL提供了一個更簡單的功能。在我的應用程序中,爲了完全相同的功能,我專門使用了FQL。

您可以觸發一個簡單的查詢。例如:

SELECT likes.user_likes FROM stream WHERE post_id ='XXXXXXXXXXXXX_XXXXXXXXX' 

用郵政編號替換X.確保您圍繞郵政ID與「YOUR_POST_ID」

嘗試像這樣在圖形API瀏覽器:fql?q=SELECT likes.user_likes FROM stream WHERE post_id = 'ENTER_YOUR_POST_ID'

運行查詢後,你應該得到一個結果,看起來這本:

{ 
    "data": [ 
    { 
     "likes": { 
     "user_likes": true 
     } 
    } 
    ] 
} 

如果用戶喜歡的帖子,現場user_likes真正如果用戶還沒有喜歡的帖子。

您可以分析這樣的結果(僞代碼):

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'

+0

您請求的某些別名不存在:SELECT likes.user_likes FROM stream WHERE post_id ='100000845850045_495772590444719'我在圖api explorer中測試時出現此錯誤 – veerendra

+0

@ user1761316:您是否在追加** fql?q = **之前'SELECT'查詢? –

+0

是的,我得到了json響應作爲輸出。所以,如何得到用戶是否喜歡它。 – veerendra

相關問題