Я работаю над небольшим 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 и т.д.)?
Используйте
mFacebook.request(graphpath, bundle);
метод,
Bundle
будут иметь параметры, которые будут такими, как
graphpath = "me/friends"
bundle.putString("fields","birthday");
и вызовите метод запроса выше, он даст вам дни рождения, но вам нужно добавить разрешение friends_birthday
.
Отметьте этот ответ, чтобы узнать, как получить список друзей Facebook и кто из этих друзей установил ваше приложение.
когда вы вызываете /me/friends
в Graph API, все, что он возвращает, это идентификаторы и имена друзей. Если вы хотите получить дополнительную информацию о друзьях, вы можете позвонить /Friend_ID
впоследствии.
/me/friends
. Затем вы можете /Friend_ID
всех друзей и для каждого из них позвоните просто /Friend_ID
(без me
). Надеюсь это поможет