Как получить все имена друзей, идентификатор, день рождения, местоположение и т.д. Из API facebook в android?

Возможный дубликат:
Как получить список друзей для друзей с помощью facebook api?

Я хочу отобразить список, содержащий информацию, такую ​​как имя, идентификатор, день рождения, местоположение из facebook в приложении android.

Я преуспел в работе, хотя в следующем коде у меня есть имя друга и идентификатор

           Bundle parameters = new Bundle();
    mAccessToken = facebook.getAccessToken();

    try {

        parameters.putString("format", "json");
        parameters.putString(TOKEN, mAccessToken);

        String url = "https://graph.facebook.com/me/friends";
        String response = Util.openUrl(url, "GET", parameters);
        JSONObject obj = Util.parseJson(response);

        Log.i("json Response", obj.toString());
        JSONArray array = obj.optJSONArray("data");

        if (array != null) {
            for (int i = 0; i < array.length(); i++) {
                String name = array.getJSONObject(i).getString("name");

                String id = array.getJSONObject(i).getString("id");

                Log.i(name,id);
            }
        } 

                ............
                ............

но не получите поля рождения, местоположения и т.д. в ответ json. что такое ошибка?

Ответ 1

Используйте язык FQL, чтобы быстро получить всю необходимую информацию:

$this->api->api(array('method'=>'fql.query','query'=>"SELECT uid,name,first_name,middle_name,last_name,pic_square,hometown_location,current_location,profile_url,email,website FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())"));

Для списка всех таблиц с соответствующими именами столбцов я обращаюсь к: Facebook FQL Reference

Ответ 2

Когда мне захотелось получить список моих друзей и отфильтровать только их имя и сайт, это сработало для меня: https://graph.facebook.com/me/friends?fields=name,website&access_token=someCrazyLongRandomlyGeneratedString

Похоже, вы должны это делать, и вы просто замените имя, сайт на "имя, идентификатор, день рождения, местоположение" или все, что вы хотели бы получить в ответ из списка полей, содержащихся в Пользовательский объект: http://developers.facebook.com/docs/reference/api/user/. Я считаю, что идентификатор автоматически включается в ответ, поэтому вам необязательно включать его в запрос.

Ответ 3

API-интерфейс Facebook говорит FriendList содержит только id и name для каждого друга.

Я не использовал API Facebook, но я думаю, вам нужно будет запросить https://graph.facebook.com/[id] для каждого пользователя, вставив свой идентификатор по мере необходимости, чтобы вернуть всю доступную информацию, а затем разобрать каждый пользовательский ответ JSON отдельно (их документы не особо понятны).

Ответ 4

Извлечение имени, идентификатора, дня рождения и местоположения друзей пользователя может быть выполнено с помощью этого вызова FQL:

SELECT uid,name, birthday_date, hometown_location 
FROM user 
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) 

На Android, используя Android Android SDK, это может быть реализовано как:

String query = "SELECT uid,name,birthday_date, hometown_location FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) (SELECT uid2 FROM friend WHERE uid1=me())"
Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query", query);
mAsyncFacebookRunner.request(null, params, new FQLRequestListener())

где FQLRequestListener расширяет RequestListener.

Вам нужны эти разрешения:

friends_birthday
friends_hometown

Ответ 5

Ваш уже близко к нему, используйте это в URL-адресе, убедитесь, что у вас есть разрешение для друзей_birthday и friends_location

String url = "https://graph.facebook.com/me/friends?fields=id,name,birthday,location";