我正在Android上开发一个Facebook应用程序,它可以获取用户朋友的一些状态更新,然后根据状态中的关键字对它们进行分类。但是,我很难找到如何获取用户朋友状态更新列表的方法。
到目前为止,我有代码从图API获取用户的朋友,但我不相信包含朋友的状态。这是我写的代码:
private void categorizeFriends(final Session session){
//get friend data
Request request = Request.newMyFriendsRequest(session, new Request.GraphUserListCallback() {
@Override
public void onCompleted(List<GraphUser> users, Response response){
if(response.getError() != null && session == Session.getActiveSession()){
for(GraphUser u : users){
categorizeFriend(u);
}
}
}
});
request.executeAsync();
}
在此代码中,categorizeFriend方法将获取朋友的状态更新,并根据他们分类的内容将它们放入全局ArrayList中。但是,看起来GraphUser中没有任何状态信息 - 它只返回每个朋友的一般信息。
所以我对这个问题有两个部分:
1)有没有办法一举两得,并在一个请求中执行此操作而不必在categorizeFriend中执行另一个请求?
2)获取用户朋友状态的请求是什么样的?我已经看到我可以为请求设置参数然后执行它,但是如何在执行该请求后收集用户的状态?
感谢您帮助我 - 我一直在寻找并且未能找到一个好的答案。
答案 0 :(得分:1)
鉴于您已意识到friends_*
权限将于2015年4月30日消失(因此您不再像现在这样使用图谱API),您可以使用字段扩展来获取所有朋友&#39 ; s状态与请求:
GET /me?fields=friends.fields(statuses.limit(5))
这将返回用户(与此查询一起使用的访问令牌)朋友的最近5次状态更新。
我强烈建议您也限制状态字段,否则可能会导致查询执行时间过长而且Facbook会取消查询(它将返回&#34;请求失败&#34 ;)
参考文献:
答案 1 :(得分:-1)
您需要为每个朋友的Feed创建一个请求,但您可以使用RequestBatch执行它们。
https://developers.facebook.com/docs/reference/android/current/class/RequestBatch/
这会发送所有请求,并在一次访问Facebook服务器时收集结果。此页面包含限制下的重要信息。批处理中的每个请求都将计入API使用限制,而不是计数为一个。它还说批量限制是一批50个请求。
https://developers.facebook.com/docs/graph-api/making-multiple-requests
很抱歉,我没有任何示例代码,但此页面会:
https://developers.facebook.com/docs/android/graph
我无法将您直接链接到代码,但第一个列表指出“使用批量请求可以提高您的应用效率”。只需点击链接即可获取代码。希望这会有所帮助。