Facebook sdk使用我的应用程序获取朋友

时间:2015-09-14 18:10:26

标签: android facebook

我试图让我的朋友使用我正在使用的相同应用程序,我写了以下代码:

 new GraphRequest(
            AccessToken.getCurrentAccessToken(),
            "/me/friends",
            null,
            HttpMethod.GET,
            new GraphRequest.Callback() {
                public void onCompleted(GraphResponse response) {
                    /* handle the result */
                    Log.d("-@-", "graph response " + response.getJSONObject());
                }
            }



        ).executeAsync();

它在logcat中给出了以下错误:

 09-14 21:05:10.096: W/FacebookSDK.Request(12520): starting with Graph API v2.4, GET requests for //me/friends should contain an explicit "fields" parameter.

日志中的输出也是:

09-14 21:05:10.706: D/-@-(12520): graph response {"summary":{"total_count":776},"data":[]}

请帮忙吗?

2 个答案:

答案 0 :(得分:2)

尝试:

   private void getUserFriendsFacebookIds() {

        GraphRequest request = new GraphRequest(
                AccessToken.getCurrentAccessToken(),
                "/me/friends",
                null,
                HttpMethod.GET,
                new GraphRequest.Callback() {
                   public void onCompleted(GraphResponse response) {
                   /* handle the result */
                   Log.d("-@-", "graph response " + response.getJSONObject());
    if (response.getError() != null) {
            Log.e(TAG, "User data error: " + response.getError(), response.getError().getException());
        } else {
            setUserFriends(response.getRawResponse());
        }
            }
          }
        );

        Bundle parameters = new Bundle();
        parameters.putString("fields", "id,name");
        request.setParameters(parameters);
        request.executeAsync();

    }

private void setUserFriends(String json) {

    FacebookFriendsInfo ff = new Gson().fromJson(json, FacebookFriendsInfo.class);

    Log.i(TAG, "User friends: " + ff);
    ...
}

要解析响应,请尝试使用GSON库。

public class FacebookFriendsInfo {


    public List<Friend> data = new ArrayList<Friend>();


    public String getIds() {

        StringBuilder sb = new StringBuilder();

        for (Friend f : data) {

            sb.append(String.format("%d,", f.id));
        }

        return sb.toString();
    }


    @Override
    public String toString() {
        return "FacebookFriendsInfo{" +
                "data=" + data +
                '}';
    }

    public class Friend {
        public long id;
        public String name;


        @Override
        public String toString() {
            return "Friend{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    '}';
        }
    }
}

答案 1 :(得分:0)

尝试使用此API调用:me/friends?fields=name

请参阅v2.4的更改日志中的“声明字段”:https://developers.facebook.com/docs/apps/changelog#v2_4