我尝试使用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中的默认类
答案 0 :(得分:3)
我个人觉得Facebook Graph API有时候有点不足。例如,在您当前的要求中,如果您只需要使用Graph API,则需要首先获取所有喜欢特定帖子的用户的列表。获得列表后,您必须检查用户ID是否与登录用户的用户ID匹配,然后根据结果运行函数或其他内容。
相反,FQL提供了更简单的功能。在我的应用程序中,对于完全相同的功能,我专门使用FQL。
您可以触发一个简单的查询。例如:
SELECT likes.user_likes FROM stream WHERE post_id ='XXXXXXXXXXXXX_XXXXXXXXX'
将X替换为Post的ID。确保使用'YOUR_POST_ID'
包围帖子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
将为真而为。
您可以像这样解析结果(伪代码):
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'