Facebook API для Android: как получить расширенную информацию о друзьях пользователя?

1

Я работаю над небольшим Android-приложением, пытаясь добавить поддержку Facebook.

Основная проблема: я могу получить только базовую информацию о друзьях друзей (id, name). Список разрешений приложений (offline_access здесь только для теста, скоро будет удален):

 String[] sPermissions = { "friends_about_me"
                         , "friends_birthday"
                         , "friends_location"
                         , "friends_website"
                         , "offline_access" };
 mLoginButton.init(this, mFacebook,  sPermissions);

Следующий запрос работает нормально - возвращает список пар id: name,

 mAsyncRunner.request("me/friends", new SampleRequestListener());

но если я изменю его, чтобы получить дополнительную информацию

 mAsyncRunner.request("me/friends?fields=id,name,birthday,hometown", new SampleRequestListener());

сервер возвращает ошибку "Активный токен доступа должен использоваться для запроса информации о текущем пользователе". Я тестировал эти запросы API Графиков, используя браузер - оба они работают, как ожидалось.

Небольшое замечание: я использую дефолтную отладку по умолчанию для подписывания apllication и добавляю ее хэш как хэш-код приложения facebook в соответствии с инструкцией Facebook:

Зарегистрируйте хеш-ключ приложения Android. Это используется Facebook, чтобы другое приложение не могло олицетворять ваше приложение при разговоре с Android-приложением Facebook.

Создать хэш ключа:

keytool -exportcert -alias [alias] -keystore [keystore] | openssl sha1 -binary | openssl base64 В настройках разработчика Facebook перейдите к Mobile и Devices.

В разделе Android введите ключ хэш в поле Key Hash.

Может быть, есть еще один способ получить информацию о вениках (bday, location, gender и т.д.)?

Теги:
facebook-graph-api

3 ответа

7
Лучший ответ

Используйте

mFacebook.request(graphpath, bundle);

метод, Bundle будут иметь параметры, которые будут такими, как

graphpath = "me/friends"
bundle.putString("fields","birthday");

и вызовите метод запроса выше, он даст вам дни рождения, но вам нужно добавить разрешение friends_birthday.

  • 0
    Вы сделали мой день :), это работает. Спасибо!
0

Отметьте этот ответ, чтобы узнать, как получить список друзей Facebook и кто из этих друзей установил ваше приложение.

0

когда вы вызываете /me/friends в Graph API, все, что он возвращает, это идентификаторы и имена друзей. Если вы хотите получить дополнительную информацию о друзьях, вы можете позвонить /Friend_ID впоследствии.

  • 0
    Привет, спасибо за предложение. Я пытался позвонить "мне / друзьям / Friend_ID" - APi возвращает только список всех друзей (id: name).
  • 0
    Сначала вам нужно получить идентификаторы, поэтому вам нужно позвонить /me/friends . Затем вы можете /Friend_ID всех друзей и для каждого из них позвоните просто /Friend_ID (без me ). Надеюсь это поможет
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню