0

我正在开发一个 android 应用程序,我需要在其中使用 Facebook 登录并获取 Facebook 朋友。

我正在使用下面的代码来获取 facebook 朋友:

公共类 FriendsRequestListener 实现 RequestListener {

/**
 * Called when the request to get friends has been completed.
 * Retrieve and parse and display the JSON stream.
 */
public void onComplete(final String response) {
    try {
        // process the response here: executed in background thread
        Log.d("Facebook-Example-Friends Request", "response.length(): " + 
                response.length());
        Log.d("Facebook-Example-Friends Request", "Response: " + response);

        final JSONObject json = new JSONObject(response);
        JSONArray d = json.getJSONArray("data");
        int l = (d != null ? d.length() : 0);
        Log.d("Facebook-Example-Friends Request", "d.length(): " + l);

        for (int i=0; i<l; i++) {
            JSONObject o = d.getJSONObject(i);
            String n = o.getString("name");
            String id = o.getString("id");
        }

        // Only the original owner thread can touch its views

    } catch (JSONException e) {
        Log.w("Facebook-Example", "JSON Error in response");
    }
}

@Override
public void onComplete(String response, Object state) {
    // TODO Auto-generated method stub

}

@Override
public void onIOException(IOException e, Object state) {
    // TODO Auto-generated method stub

}

@Override
public void onFileNotFoundException(FileNotFoundException e, Object state) {
    // TODO Auto-generated method stub

}

@Override
public void onMalformedURLException(MalformedURLException e, Object state) {
    // TODO Auto-generated method stub

}

@Override
public void onFacebookError(FacebookError e, Object state) {
    // TODO Auto-generated method stub

}

}

调用这个类的方法:

mAsyncRunner = new AsyncFacebookRunner(facebook);
                mAsyncRunner.request("me/friends", new FriendsRequestListener());

问题是我的代码在调用上述代码时没有做任何事情。

4

2 回答 2

0

你可以使用这个 api https://graph.facebook.com/v1.0/me/friends?fields=picture,id,username&limit=${limit}&access_token=${accessToken}

这是一个 v1.0 api,它允许用户获取所有朋友列表

于 2021-06-26T17:08:02.433 回答
-1

要获取您所有的 Facebook 好友列表,您需要获取“taggable_friends”

GraphRequestAsyncTask r = GraphRequest.newGraphPathRequest(fbToken,
        "/me/taggable_friends", new Callback() {

            @Override
            public void onCompleted(GraphResponse response) {
                //here you can parse the response
            }
        }

fbToken是您登录时的令牌。但是,facebook 使用分页,因此您需要从好友请求中获取下一页和下一个值,以便解析它。

response.getJSONObject("paging").getString("next");

使用 StringRequest 获取下一页用户

StringRequest sr = new StringRequest(Request.Method.GET, next,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {

                JSONObject friends = null;
                try {
                    friends = new JSONObject(response);
                    parseResponse(friends);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
    }

查看完整代码 Facebook 好友列表

于 2015-11-30T13:15:27.153 回答