web-dev-qa-db-ja.com

Android Facebook SDKを使用してFacebookから友達リストを取得する方法?

Facebookでアプリを作成し、Facebook SDKを実装するための最初のステップをいくつか達成しました。

これは私がやろうとしていることです:Facebookから友達のリストを取得し、そのリストから友達を選択して自分のアプリにインポートできるようにします。

どうすればいいですか?

10

アプリにログインしているユーザーのFacebookフレンドリストを取得しようとしていますか? Facebookグラフリクエストを実行してそのリストを取得し、必要な友達を撤回する必要があるようです。
https://developers.facebook.com/docs/graph-api/reference/user/friendlists/

Android Javaで実行したい場合、彼女はその例です:

    AccessToken token = AccessToken.getCurrentAccessToken();
        GraphRequest graphRequest = GraphRequest.newMeRequest(token, new GraphRequest.GraphJSONObjectCallback() {
            @Override
            public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) {
                try {
                    JSONArray jsonArrayFriends = jsonObject.getJSONObject("friendlist").getJSONArray("data");
                    JSONObject friendlistObject = jsonArrayFriends.getJSONObject(0);
                    String friendListID = friendlistObject.getString("id"); 
                    myNewGraphReq(friendListID);

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        });
    Bundle param = new Bundle();
    param.putString("fields", "friendlist", "members");
    graphRequest.setParameters(param);
    graphRequest.executeAsync();

「メンバー」は「フレンドリスト」のエッジであるため、フレンドリストIDを使用して新しいリクエストを実行し、その特定のフレンドリストのメンバーを取得できます。 https://developers.facebook.com/docs/graph-api/reference/friend-list/members/

private void myNewGraphReq(String friendlistId) {
    final String graphPath = "/"+friendlistId+"/members/";
    AccessToken token = AccessToken.getCurrentAccessToken();
    GraphRequest request = new GraphRequest(token, graphPath, null, HttpMethod.GET, new GraphRequest.Callback() {
        @Override
        public void onCompleted(GraphResponse graphResponse) {
            JSONObject object = graphResponse.getJSONObject();
            try {
                JSONArray arrayOfUsersInFriendList= object.getJSONArray("data");  
                /* Do something with the user list */
                /* ex: get first user in list, "name" */
                JSONObject user = arrayOfUsersInFriendList.getJSONObject(0);
                String usersName = user.getString("name");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });
     Bundle param = new Bundle();
    param.putString("fields", "name");
    request.setParameters(param);
    request.executeAsync();
}

Facebookグラフリクエストのドキュメントでは、Userオブジェクトで何ができるかを確認できます。残念ながら別のリンクを投稿するのに十分な担当者がいません。

これらの操作を行うために必要なアクセストークンを取得するには、ユーザーがFacebookでサインインしている必要があることに注意してください。

まあ、それがあなたが探していたこのような遠いものだったといいのですが。

編集:この方法は機能しなくなりました。フレンドリストに関する最初のリンクは、2018年4月4日から非推奨であることを示しています。

16
Slagathor