我正在使用Facebook Android SDK。有没有简单的方法可以获取已下载该应用程序的用户的好友列表?例如,应用程序Draw Something实现了这一点。我似乎找不到任何关于这个主题的信息。
我猜想如果可能的话,需要在httppost中添加一些额外的信息来访问这些信息。
我猜想如果可能的话,需要在httppost中添加一些额外的信息来访问这些信息。
* 注意:自3.14版本以来,me / friends仅返回使用该应用程序的朋友,因此以下实现已过时。请查看新的“可邀请朋友”或“可标记朋友”API以获取替代方案。
使用新的Facebook SDK for Android(3.0)非常容易获取用户的好友列表。 以下是代码:
private void requestFacebookFriends(Session session) {
Request.executeMyFriendsRequestAsync(session,
new Request.GraphUserListCallback() {
@Override
public void onCompleted(List<GraphUser> users,
Response response) {
// TODO: your code for friends here!
}
});
}
尽管如此,要获取正在使用您的Facebook应用程序的用户的朋友有点复杂(由于Facebook API文档)。但是是可能的。
首先,创建您的请求:
private Request createRequest(Session session) {
Request request = Request.newGraphPathRequest(session, "me/friends", null);
Set<String> fields = new HashSet<String>();
String[] requiredFields = new String[] { "id", "name", "picture",
"installed" };
fields.addAll(Arrays.asList(requiredFields));
Bundle parameters = request.getParameters();
parameters.putString("fields", TextUtils.join(",", fields));
request.setParameters(parameters);
return request;
}
private void requestMyAppFacebookFriends(Session session) {
Request friendsRequest = createRequest(session);
friendsRequest.setCallback(new Request.Callback() {
@Override
public void onCompleted(Response response) {
List<GraphUser> friends = getResults(response);
// TODO: your code here
}
});
friendsRequest.executeAsync();
}
private List<GraphUser> getResults(Response response) {
GraphMultiResult multiResult = response
.getGraphObjectAs(GraphMultiResult.class);
GraphObjectList<GraphObject> data = multiResult.getData();
return data.castToListOf(GraphUser.class);
}
GraphUser user = friends.get(0);
boolean installed = false;
if(user.getProperty("installed") != null)
installed = (Boolean) user.getProperty("installed");
Bundle params = new Bundle();
params.putString("fields", "name, picture, location, installed");
boolean b = jsonObject.getBoolean("installed");
if (b){
Log.d("VIVEK",jsonObject.getString("name"));
}
has_added_app
字段已被弃用,您应该使用is_app_user
。