Android获得有app下载的Facebook好友

时间:2012-04-17 20:51:17

标签: android facebook

我正在使用Facebook Android SDK。是否有一种简单的方法可以让用户的朋友下载应用程序?例如,应用程序Draw Something实现了这一点。我似乎无法找到关于这个主题的任何信息

我猜想如果可能的话,在httppost中需要一些额外的信息来访问这些信息。

3 个答案:

答案 0 :(得分: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!
                }
            });
}

尽管如此,为了让使用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;
}

请注意,您需要在请求中插入字段“已安装”。我正在请求具有相同请求的用户图片路径。检查您的可能性here

接下来,您可以使用上面的代码创建您的请求,然后联系您的朋友:

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();
}

请注意,使用此通用请求时,您不会收到GraphUser列表作为响应。您需要以下代码才能将响应作为GraphUser列表获取:

private List<GraphUser> getResults(Response response) {
    GraphMultiResult multiResult = response
            .getGraphObjectAs(GraphMultiResult.class);
    GraphObjectList<GraphObject> data = multiResult.getData();
    return data.castToListOf(GraphUser.class);
}

现在,您可以使用您的用户的朋友列表,以及您的每位朋友使用您的Facebook应用程序时的信息:

GraphUser user = friends.get(0);
boolean installed = false;
if(user.getProperty("installed") != null)
    installed = (Boolean) user.getProperty("installed");

答案 1 :(得分:2)

我以这种方式实现了它

Bundle params = new Bundle();

params.putString("fields", "name, picture, location, installed");

在显示列表中的项目期间,在getView()方法中我做了这个

boolean b = jsonObject.getBoolean("installed");

if (b){
    Log.d("VIVEK",jsonObject.getString("name"));
}

答案 2 :(得分:1)

我希望这篇文章可以帮助你: How can i get my friends using my facebook App with graph api asp.net

根据Facebook SDKhas_added_app字段已弃用,您应该使用is_app_user