7

Facebook Android SDK を使用しています。アプリをダウンロードしたユーザーの友達を簡単に取得する方法はありますか? たとえば、アプリ Draw Something はこれを実装しています。この件に関する情報が見つからないようです

可能であれば、この情報にアクセスするには、httppost に追加の情報が必要になると思います。

4

3 に答える 3

54

*注: 3.14 バージョン以降、me/friends はアプリを使用している友達のみを返すため、以下の実装は非推奨です。代替手段については、新しい「Invitable Friends」または「Taggable Friends」API を参照してください。

新しいFacebook SDK for Android (3.0)を使用すると、ユーザーの友達リストを簡単に取得できます。コードは次のとおりです。

private void requestFacebookFriends(Session session) {
    Request.executeMyFriendsRequestAsync(session,
            new Request.GraphUserListCallback() {
                @Override
                public void onCompleted(List<GraphUser> users,
                        Response response) {
                    // TODO: your code for friends here!
                }
            });
}

それにもかかわらず、Facebook アプリを使用しているユーザーの友達を取得するのは少し複雑です (Facebook API のドキュメントのため)。しかし、はい、可能です。

まず、リクエストを作成します。

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

    Set<String> fields = new HashSet<String>();
    String[] requiredFields = new String[] { "id", "name", "picture",
            "installed" };
    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);
            // TODO: your code here
        }
    });
    friendsRequest.executeAsync();
}

この一般的なリクエストを使用すると、応答として GraphUser リストを受信しないことに注意してください。GraphUser リストとして応答を取得するには、次のコードが必要です。

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

これで、各友達が Facebook アプリを使用しているかどうかの情報を使用して、ユーザーの友達リストを使用できます。

GraphUser user = friends.get(0);
boolean installed = false;
if(user.getProperty("installed") != null)
    installed = (Boolean) user.getProperty("installed");
于 2013-03-04T06:48:40.547 に答える
2

こんな感じで実装しました

Bundle params = new Bundle();

params.putString("fields", "name, picture, location, installed");

そして、リスト上のアイテムの表示中に、 getView() メソッドでこれを行いました

boolean b = jsonObject.getBoolean("installed");

if (b){
    Log.d("VIVEK",jsonObject.getString("name"));
}
于 2012-05-17T09:45:48.000 に答える
1

この投稿がお役に立てば幸いです: グラフAPI asp.netでFacebookアプリを使用して友達を取得するにはどうすればよいですか

Facebook SDKによると、このhas_added_appフィールドは非推奨であり、使用する必要がありますis_app_user

于 2012-04-17T21:11:45.280 に答える