使用newMyFriendsRequest方法从Facebook获取好友列表 - Android

时间:2015-02-21 13:13:57

标签: android facebook facebook-graph-api

在我的Android应用程序中,我想显示Facebook好友列表及其信息。 为了检索朋友的数据,我使用了以下代码: -

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (state.isOpened()) {
        Log.i(TAG, "Logged in...");
        Request friendRequest = Request.newMyFriendsRequest(session, 
                new GraphUserListCallback(){
            @Override
            public void onCompleted(List<GraphUser> users,
                    Response response) {
                Log.i("INFO", response.toString());
                GraphObject graphObject = response.getGraphObject();
                if (graphObject != null) {
                    JSONObject jsonObject = graphObject.getInnerJSONObject();
                    try {
                        JSONArray array = jsonObject.getJSONArray("data");
                        //code to store data
                    } catch (JSONException e) {

                        e.printStackTrace();
                    }
                }

            }
        });
        Bundle params = new Bundle();
        params.putString("fields", "id, name , picture");
        friendRequest.setParameters(params);
        friendRequest.executeAsync();


    } else if (state.isClosed()) {
        Log.i(TAG, "Logged out...");
    }
}

但是当我按照代码中的这一行运行代码并打印日志消息时: -

Log.i("INFO", response.toString());

我收到了以下日志消息: -

INFO: {Response:  responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[],"summary":{"total_count":1029}}}, error: null, isFromCache:false}

指出正确的Facebook朋友&#34; 1029&#34;但实际数据为空&#34;数据&#34;:[]。 如何检索正确的数据? 请指正。

EDIT1

现在确认我们只能得到安装了相同app的朋友列表。我使用了与上面提到的相同的代码,只有一行变更: -

params.putString("fields", "id, name , birthday");

我也想访问朋友生日。我将所有必要的权限设置如下

"read_friendlists","friends_birthday","read_stream", "offline_access"

但响应只包含id和name但不包含生日。

请建议需要。

请提供解决方案。

2 个答案:

答案 0 :(得分:4)

https://developers.facebook.com/docs/apps/changelog

2014年4月30日之后创建的应用只能获得授权您的应用的朋友。在该日期之前创建的应用将在2015年4月之后升级到v2.0。

有一个非常详细的答案,涵盖了您在此主题中需要了解的所有内容:https://stackoverflow.com/a/23417628/757508

答案 1 :(得分:2)

不幸的是,自2014年3月左右以来,facebook sdk将朋友列表限制为安装了您的应用的朋友。所以基本上如果没有用户安装你的应用程序,它会返回朋友列表null。