Я пытаюсь получить имя и идентификаторы моего друга в Graph API v2.0, но данные возвращаются пустыми:
{
"data": [
]
}
Когда я использовал v1.0, все было в порядке со следующим запросом:
FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary* result,
NSError *error) {
NSArray* friends = [result objectForKey:@"data"];
NSLog(@"Found: %i friends", friends.count);
for (NSDictionary<FBGraphUser>* friend in friends) {
NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
}
}];
Но теперь я не могу найти друзей!
Ответы:
В версии 2.0 API Graph, вызов
/me/friends
возвращает друзей этого человека, которые также используют приложение.Кроме того, в версии 2.0 вы должны запрашивать
user_friends
разрешение у каждого пользователя.user_friends
больше не включается по умолчанию в каждый логин. Каждый пользователь должен предоставитьuser_friends
разрешение, чтобы появиться в ответе/me/friends
. Обратитесь к руководству по обновлению Facebook для получения более подробной информации или просмотрите сводку ниже.Если вы хотите получить доступ к списку друзей, не использующих приложение, есть два варианта:
Если вы хотите, чтобы ваши люди отмечали своих друзей в историях, которые они публикуют в Facebook с помощью вашего приложения, вы можете использовать
/me/taggable_friends
API. Использование этой конечной точки требует проверки со стороны Facebook и должно использоваться только в том случае, когда вы отображаете список друзей, чтобы позволить пользователю отметить их в сообщении.Если ваше приложение представляет собой игру и ваша игра поддерживает Facebook Canvas , вы можете использовать
/me/invitable_friends
конечную точку для отображения настраиваемого диалогового окна приглашения , а затем передать токены, возвращенные этим API, в стандартный диалог запросов.В других случаях приложения больше не могут получить полный список друзей пользователя (только те друзья, которые специально авторизовали ваше приложение с помощью
user_friends
разрешения). Facebook подтвердил это как «дизайн».Для приложений, которые хотят разрешить людям приглашать друзей использовать приложение, вы все равно можете использовать Диалог отправки в Интернете или новый Диалог сообщений на iOS и Android .
ОБНОВЛЕНИЕ: Facebook опубликовал FAQ об этих изменениях здесь: https://developers.facebook.com/docs/apps/faq, в котором объясняются все опции, доступные разработчикам для приглашения друзей и т. Д.
источник
taggable_friends
в пунктах для представления обзора.taggable_friends
Теперь ничего не возвращает. Кроме того, проверка входа требуется, прежде чем вы можете получитьuser_friends
разрешение.Хотя Саймона Кросса ответ принят и верен, я подумал, что немного подкреплю его примером (Android) того, что нужно сделать. Я сделаю это как можно более общим и сосредоточусь только на вопросе. Лично я закончил хранить вещи в базе данных, чтобы загрузка была гладкой, но для этого нужны CursorAdapter и ContentProvider, который здесь немного выходит за рамки.
Я пришел сюда сам, а потом подумал, что теперь ?!
Проблема
Так же, как user3594351 , я заметил, что данные друзей были пустыми. Я выяснил это с помощью FriendPickerFragment. То, что работало три месяца назад, больше не работает. Даже примеры Facebook сломались. Итак, моя проблема была «Как мне создать FriendPickerFragment вручную?
Что не сработало
Вариант № 1 от Саймона Кросса не был достаточно силен, чтобы пригласить друзей в приложение. Саймон Кросс также рекомендовал Диалог запросов, но он позволял только пять запросов одновременно. Диалоговое окно запросов также показывало одних и тех же друзей во время любого входа в Facebook. Не полезно.
Что сработало (резюме)
Вариант № 2 с тяжелой работой. Вы должны убедиться, что выполняете новые правила Facebook: 1.) Вы игра 2.) У вас есть приложение Canvas (веб-присутствие) 3.) Ваше приложение зарегистрировано в Facebook. Все это делается на веб-сайте разработчика Facebook в разделе « Настройки» .
Чтобы эмулировать сборщик друзей вручную в моем приложении, я сделал следующее:
подробности
AsynchTask
Класс FacebookFriend, который я создал
источник
Facebook пересмотрел свою политику сейчас. В любом случае вы не сможете получить весь список друзей, если ваше приложение не имеет реализации Canvas и если ваше приложение не является игрой. Конечно, есть также taggable_friends, но этот предназначен только для тегов.
Вы сможете получить список друзей, которые только авторизовали приложение.
Приложения, использующие Graph API 1.0, будут работать до 30 апреля 2015 года, после чего они будут устаревшими.
Смотрите следующее, чтобы получить более подробную информацию об этом:
Друзья пользователя
FAQ по разработке приложений Facebook
источник
В Swift 4.2 и Xcode 10.1:
Если вы хотите получить список друзей из Facebook, вам нужно отправить свое приложение на рассмотрение в Facebook. Посмотрите некоторые из Входов Разрешения:
Разрешения входа
Вот два шага:
1) Сначала статус вашего приложения должен быть в Live
2) Получить необходимые разрешения формы Facebook.
1) Включите статус нашего приложения в реальном времени:
Перейдите на страницу приложений и выберите свое приложение
https://developers.facebook.com/apps/
Выберите статус в правом верхнем углу панели инструментов .
Отправить URL политики конфиденциальности
Выберите категорию
Теперь наше приложение находится в статусе Live .
Один шаг завершен.
2) Отправьте наше приложение на рассмотрение:
Сначала отправьте необходимые запросы.
Пример: user_friends, user_videos, user_posts и т. Д.
Во-вторых, перейдите на страницу текущего запроса
Пример: user_events
Отправить все детали
Как это отправить для всех запросов (user_friends, user_events, user_videos, user_posts и т. Д.).
Наконец, отправьте ваше приложение на рассмотрение.
Если ваш отзыв принят со стороны Facebook, вы можете читать контакты и т. Д.
источник
user_friends
Разрешение очень ограничено. Из документации Facebook (апрель 2019 г.): [Только это] предоставляет приложению разрешение на доступ к списку друзей, которые также используют это приложение. Это разрешение ограничено ограниченным набором партнеров, и использование требует предварительного одобрения Facebook. Для того, чтобы человек появился в списке друзей другого пользователя, оба должны были поделиться своим списком друзей с приложением и не отключать это разрешение при входе в систему.Как уже упоминал Саймон, это невозможно в новом API Facebook. Чисто технически говоря, вы можете сделать это с помощью автоматизации браузера.
Пример реализации с использованием WatiN :
Прототип с реализацией этого подхода (с использованием C # / WatiN) см. Https://github.com/svejdo1/ShadowApi . Это также позволяет динамически обновлять коннектор Facebook, который получает список ваших контактов.
источник
Попробуйте
/me/taggable_friends?limit=5000
использовать свой код JavaScriptИли
попробуйте Graph API :
https://graph.facebook.com/v2.3/user_id_here/taggable_friends?access_token=
источник
В API Facebook SDK Graph v2.0 или выше вы должны запрашивать разрешение user_friends у каждого пользователя во время входа в Facebook с момента user_friends. больше не включается по умолчанию в каждый вход в систему; мы должны добавить это.
Каждый пользователь должен предоставить разрешение user_friends для того, чтобы появиться в ответе на / me / friends .
Таким образом, во время входа в Facebook, он предлагает экран, который содержит все разрешения:
Если пользователь нажимает кнопку « Продолжить» , разрешения будут установлены. Когда вы получаете доступ к списку друзей с помощью Graph API, ваши друзья, которые вошли в приложение, как указано выше, будут перечислены
Вывод будет содержать пользователей, которые предоставили разрешение user_friends во время входа в ваше приложение через Facebook.
источник