Как получить все имена друзей, идентификатор, день рождения, местоположение и т.д. Из 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";