我正在使用Facebook Android SDK.是否有一种简单的方法可以让用户的朋友下载该应用程序?例如,应用程序Draw Something实现了这一点.我似乎无法找到有关此主题的任何信息
我想如果可能的话,在httppost中需要一些额外的信息来访问这些信息.
JPM*_*aes 54
*注意:从3.14版本开始,我/朋友只会返回也使用该应用程序的朋友,因此以下实施不推荐使用.有关替代方案,请参阅新的"Invitable Friends"或"Taggable 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!
}
});
}
Run Code Online (Sandbox Code Playgroud)
然而,为了让使用你的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;
}
Run Code Online (Sandbox Code Playgroud)
请注意,您需要在请求中插入"已安装"字段.我正在请求具有相同请求的用户图片路径.检查您的可能性在这里.
接下来,您可以使用上面的代码创建您的请求,然后让您的朋友:
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();
}
Run Code Online (Sandbox Code Playgroud)
请注意,使用此通用请求时,您不会收到GraphUser列表作为响应.您需要以下代码才能将响应作为GraphUser列表获取:
private List<GraphUser> getResults(Response response) {
GraphMultiResult multiResult = response
.getGraphObjectAs(GraphMultiResult.class);
GraphObjectList<GraphObject> data = multiResult.getData();
return data.castToListOf(GraphUser.class);
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用您的用户的朋友列表,以及您的每个朋友使用您的Facebook应用程序时的信息:
GraphUser user = friends.get(0);
boolean installed = false;
if(user.getProperty("installed") != null)
installed = (Boolean) user.getProperty("installed");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15116 次 |
| 最近记录: |