在我的应用程序中,我的目的是获得音乐,书籍,电视等朋友的一些兴趣。这些信息是公开的。为此,我想我不需要发送许可。 基于facebook(差)文档,主要是这个链接: Field Expansion为了获得朋友的兴趣我只需要在扩展的朋友字段中传递朋友ID。 在GraphExplorer上做一些测试我看到它创建了以下查询以从一些朋友那里获取电影:
MY_ID?fields=friends.uid(FRIEND_ID).fields(movies)
我使用它并以异步方式在Request.newMyFriendRequest上执行此代码:
Session activeSession = Session.getActiveSession();
if(activeSession.getState().isOpened()){
Request request = Request.newMyFriendsRequest(activeSession,
new GraphUserListCallback(){
@Override
public void onCompleted(List<GraphUser> users, Response response){
GraphUser user = users.get(0);
JSONObject friendLikes = user.getInnerJSONObject();
try {
JSONArray data = friendLikes.getJSONObject("friends").getJSONArray("data");
Log.i("JSON", friendLikes.toString());
addInterests(data, 0);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle bundle = new Bundle();
bundle.putString("fields", "friends.uid("+friendID+").fields(movies)");
request.setParameters(bundle);
request.executeAsync();
我执行此代码的所有时间都从JSON收到以下错误: W / System.err(694):org.json.JSONException:没有朋友的价值。 如果这不是使用GraphAPI获取朋友兴趣的方法,那么我需要做些什么才能获得这些值?
答案 0 :(得分:1)
[编辑] 解决了在登录时发布friends_likes权限的问题。请求中未发送权限。 我修改了一点我的解决方案。如果有人有兴趣:
String fqlQuery = "SELECT music, books, movies FROM user where uid ="+friendID;
Bundle bundle = new Bundle();
bundle.putString("q", fqlQuery);
Request request = new Request(activeSession, "/fql", bundle, HttpMethod.GET,
new Request.Callback() {
@Override
public void onCompleted(Response response) {
// TODO Auto-generated method stub
Log.i("INFO", response.toString());
}
});
Request.executeBatchAsync(request);