9

Я хотел бы получить друзей друзей с помощью вызова API, и когда я пытаюсь сделать это, я получаю следующее исключение,Попадая друзья друзей в FB графа 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> 

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

+1

Право: вы не можете получить доступ к Друзьям друзей. –

+0

Хотелось бы узнать, как это сделать. Вы можете сделать это с Facebook, и iPhone-приложение Facebook также позволяет это. – senfo

+0

@Abhishek: Теперь можно с fql подружиться с друзьями (ограничено) .. Я дал решение. –

ответ

-3

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

+0

Ну, я также попытался создать два профиля со всем доступом к друзьям и проверить его. Кажется, что не работает :( – Abhishek

6

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

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

+0

Это правильный ответ. 100% –

-1

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

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

Я смог проверить сценарии, которые я описал.

+0

Я не знаю, почему этот ответ отклоняется. Это правильный ответ. Лучшие сценарии - общие друзья, показанные здесь: http: // разработчики .facebook.com/docs/reference/rest/friends.getMutualFriends /. Или используя график здесь: http://developers.facebook.com/tools/explorer/?method=GET&path=me%2Fmutualfriends%2F1207059 –

0

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

+0

: Теперь это возможно с fql, чтобы подружиться с друзьями (ограничено) .. Я дал решение. –

3

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

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

$ запрос = "SELECT UID, имя, work_history FROM пользователя WHERE UID IN (SELECT UID2 FROM друга WHERE UID1 IN (SELECT UID FROM пользователя WHERE UID В (SELECT UID2 FROM друга WHERE UID1 = $ fb_id) и is_app_user = 1)) "; $ user_info = $ facebook-> api (array ('method' => 'fql.query ', ' query '=> $ 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" 

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

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

+0

Я не совсем понимаю это. Скажем, я перечисляю своих друзей, и они содержат fbID = 17, 24, 319 и 4027. Теперь я бы например, получить список друзей fbID = 319 (один из моих друзей). Это работает на веб-сайте FB, но я не получаю его работать с вашим запросом. Я вас не понимаю? – Olie

+0

@Olie: У меня есть обновленное решение. –

1

You не может подружиться с друзьями, это запрещено в связи с проблемами конфиденциальности.

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

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

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

Смежные вопросы