Получение друзей друзей в FB graph API - PullRequest
9 голосов
/ 29 сентября 2010

Я хотел бы завести друзей у друзей через вызов API, и при попытке сделать это я получаю следующее исключение:

    {
   "error": {
      "type": "OAuthException",
      "message": "(#604) Can't lookup all friends of .... Can only lookup for the logged in user (...), or friends of the logged in user with the appropriate permission"
   }
}

URL, к которому я пытаюсь получить доступ,

https://graph.facebook.com/friend_id/friends?access_token=access_token

Я получаю расширенные разрешения, а именно:

<fb:login-button perms="user_likes,friends_likes"></fb:login-button>

Не мог бы кто-нибудь сообщить мне, что здесь происходит не так?Или это значит, что я никогда не смогу получить доступ к друзьям друзей?

Ответы [ 6 ]

6 голосов
/ 29 сентября 2010

В настоящее время нет расширенного разрешения, позволяющего просматривать друзей друзей пользователя.Разрешения "* _likes" просто показывают вам страницы Facebook, которые понравились пользователям.

Возможно, вы сможете итеративно извлекать и кэшировать друзей каждого из друзей пользователя, по одному, но бездоступ к токенам для каждого друга, вы сможете получать только общие данные.

3 голосов
/ 25 февраля 2012

У меня есть друзья друзей (ограничено). У меня была такая же проблема. Хотя уже очень поздно отвечать на вопрос, это кому-нибудь поможет. Поэтому отвечаю на этот вопрос.

Мы можем завести друзей друзей, которые являются пользователями приложения. $ fb_id = идентификатор пользователя, которому нужны друзья друзей.

$ query = "SELECT uid, name, work_history ОТ пользователя ГДЕ uid IN (SELECT uid2 ОТ друга, ГДЕ uid1 IN (ВЫБЕРИТЕ uid ИЗ ПОЛЬЗОВАТЕЛЯ, ГДЕ УИД В (ВЫБЕРИТЕ uid2 ОТ ДРУГОГО ГДЕ uid1 = $ fb_id) и is_app_user = 1)) "; $ User_info = $ facebook-> апи (массив ( 'метод' => 'fql.query', 'Запрос' => $ запроса));

@ Olie:

Вы получаете друзей вашего друга через приложение. Так что вам нужно разрешение от вашего друга, чьи друзья вы хотите. т. е. ваш друг должен использовать это приложение и принять эти разрешения, допуская доступ к информации. В противном случае вы не сможете быть друзьями вашего друга. Я проверил этот запрос. И это успешно работает.

"message": "(#604) Can't lookup all friends of .... Can only lookup for the logged in user (...), or friends of the logged in user with the appropriate permission"

Это сообщение хорошо объясняет. Читайте внимательно.

Надеюсь, вы понимаете критерии решения.

1 голос
/ 25 февраля 2013

Вы не можете заводить друзей у друзей, это не разрешено из-за соображений конфиденциальности.

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

Важное примечание , такая таблица будет быстро растивполне конфискованный в зависимости от количества пользователей, которых вы получаете.

Рассчитывайте на каждого пользователя, имеющего в среднем около 250-300 друзей, поэтому, если вы выберете такое решение, обязательно оптимизируйте для него свою базу данных, а затемдолжно работать просто замечательно.

0 голосов
/ 02 января 2012

Возникла та же проблема, пришлось использовать старый REST API, чтобы получить хотя бы общих друзей, см. http://developers.facebook.com/docs/reference/rest/friends.getMutualFriends/

0 голосов
/ 28 июля 2011

Вы можете получить друзей текущего пользователя через вызов API Graph мне / друзьям.Вам понадобится любой действительный access_token, никаких специальных расширенных разрешений, только Basic.Есть одно предупреждение: этот пользователь должен разрешить вам видеть его список друзей.Таким образом, в настройках конфиденциальности> Подключение к Facebook есть настройка «Просмотреть список друзей».Если пользователь выбрал пользовательский параметр и сказал «Только я», вы получите эту ошибку.

Точно так же, если текущий пользователь разрешает другим видеть свой список друзей, но один из друзей закрывает его из-за проблем с конфиденциальностью, вы не сможете видеть никаких данных и получите эту ошибку.*

Мне удалось проверить сценарии, которые я описал.

0 голосов
/ 29 сентября 2010

К сожалению, я не могу конкретно спросить ваш ответ, поскольку у меня нет опыта работы с FB API.Тем не менее, я считаю, что FB позволяет пользователям скрывать, кто их друзья.Если у них есть этот набор, возможно, вы вообще не сможете получить доступ к их друзьям.Я бы попытался изменить ваш код, чтобы сначала проверить, какие у данного пользователя есть разрешения, и только потом обращаться к его списку друзей, если у вас есть к нему доступ.Немного спекуляций здесь, хотя.

...