#facebook #facebook-graph-api #facebook-fql #facebook-friends #social-network-friendship
#Facebook #facebook-graph-api #facebook-fql #facebook-друзья #социальная сеть-дружба
Вопрос:
Я использую FB graph api, чтобы получить список друзей моих друзей с помощью:
https://graph.facebook.com/<id>/friends?access_token=<token>
Теперь самое странное, что это работает для некоторых моих друзей и не работает для некоторых других. Может ли кто-нибудь сказать мне, почему это происходит, и возможное исправление?
В случаях, когда это не работает, я получаю следующее сообщение: «Не удается выполнить поиск по всем друзьям ГГГГ. Можно искать только вошедшего в систему пользователя (XXXXX) или друзей вошедшего в систему пользователя с соответствующим разрешением»
И я повторяю, я могу получить списки друзей некоторых из моих друзей, используя приведенный выше URL. Какие разрешения упоминаются здесь?
Ответ №1:
Права на конфиденциальность.
Как пользователь, я контролирую, кто может видеть мой список друзей. Если я выберу «Только друзья», то мой список смогут видеть только мои друзья, а не «друзья друзей»
Войдите в facebook, в правом верхнем углу щелкните Учетная запись -> Настройки конфиденциальности, затем нажмите «Просмотреть настройки» в разделе «Подключение к Facebook»
«Просмотр списка ваших друзей» — вот что управляет этим.
Редактировать: Извините, пришлось подумать об этом на минуту.
Вы можете видеть друзей своего друга через стандартный веб-интерфейс Facebook. Ваше приложение — это не вы. Даже если вы предоставили приложению доступ к своей учетной записи, ваши друзья этого не сделали. В этом случае вы не сможете вернуть друзей вашего друга, если для них не установлено значение «Все». Ваше приложение не является другом друга.
Я полагаю, что в этом и есть причина. Другой причиной может быть то, что их API известен своими ошибками. Вы всегда можете открыть отчет об ошибке на http://bugs.developers.facebook.net / и если мое предположение верно, кто-нибудь даст вам знать.
Комментарии:
1. Да, я проверил это сразу после создания этого поста. Хотя я могу видеть друзей своих друзей на веб-сайте Facebook, вызов API не извлекает их. Только некоторые вызовы завершаются успешно. Это не согласовано.
2. Спасибо за ответ, Брайан. На самом деле я не извлекаю эту информацию с помощью приложения facebook. Я выполняю простые старые HTTP-вызовы, используя свой токен доступа (см. URL, который я опубликовал выше). Я думаю, что это ближе ко «мне», чем приложение facebook. Это то, что меня смутило.
3. Разницы нет. «Graph API» — это просто REST-ful интерфейс. Не имеет значения, используете ли вы «приложение» или свой браузер и включаете ли токен доступа — все это просто HTTP-запросы. Когда вы включаете токен доступа, запрос выполняется в контексте приложения.
Ответ №2:
У меня есть друзья друзей (ограниченное количество). У меня была такая же проблема. Хотя отвечать на вопрос уже очень поздно, это кому-нибудь поможет. Вот почему, отвечая на этот вопрос.
Мы можем получить друзей друзей, которые являются пользователями приложения. Попробуйте с помощью этого fql-запроса.
$ fb_id = идентификатор пользователя, для которого требуются друзья друзей.
$query="SELECT uid, name, work_history FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 IN (SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = $fb_id ) and is_app_user=1) )";
$user_info=$facebook->api(array('method'=>'fql.query',
'query'=>$query));
Ответ №3:
Действительно. Это все http-запросы. Но если я нажимаю на ссылку, чтобы показать друзей Джона, facebook перечисляет их, а если я использую graph api и токен, это не так. В любом случае, это я спрашиваю, но api непоследователен.