如何从Facebook获取好友列表

时间:2014-06-26 06:34:01

标签: android facebook facebook-graph-api

我想从Facebook获取好友列表,但我无法获得好友列表。我尝试了不同的代码,但我总是得到null作为回应。即使我运行样本像美味的应用程序我也不会得到朋友列表。有人建议我使用"me/taggable_friends",但仍然没有获得好友列表。

所以我真的想知道是否有可能从Facebook获得好友列表。如果是,请告诉我。

public class MainActivity extends Activity {

    private final static String TAG = "MainActivity";

      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);   

        Session.openActiveSession(this, true, new Session.StatusCallback(){

            @Override
            public void call(Session session, SessionState state,
                    Exception exception) {

                requestMyAppFacebookFriends(session);

            }

        });


      }

      private Request createRequest(Session session) {
            Request request = Request.newGraphPathRequest(session, "me/taggable_friends", null);

            Set<String> fields = new HashSet<String>();
            String[] requiredFields = new String[] { "id", "name", "picture"};
            fields.addAll(Arrays.asList(requiredFields));

            Bundle parameters = request.getParameters();
            parameters.putString("fields", TextUtils.join(",", fields));
            request.setParameters(parameters);

            return request;
        }


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

                   Log.v(TAG, "friends list size "+friends.size());
                }
            });
            friendsRequest.executeAsync();
        }

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

      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
      }

1 个答案:

答案 0 :(得分:0)

Facebook已经在2.0版本上做了一些重大改变。其中一个变化是获取好友列表。以前我们可以使用/me/friends获取好友列表,但此端点不适用于v2.0。

您使用了正确的API- /me/taggable_friends,但问题是,首先需要通过Facebook审核才能在您的实时应用中使用此功能。 Here解释了如何提交审核。

出于测试目的,将应用切换到开发模式或仅使用开发人员/管理员/测试人员帐户测试应用;否则你会得到一个空白的回复。