API Facebook без аутентификации клиента для общего контента
Я разрабатываю сайт для клиента, у которого уже есть фотографии его продуктов на Facebook, и он хочет, чтобы те же альбомы были воспроизведены на его сайте. Я уже использовал Facebook Connect, поэтому я бросил комбинацию photos.getAlbums
и photos.get
для динамического создания галерей.
До сих пор так хорошо, но потом я понял, что если нет пользователя, зарегистрированного через FBC, сеанс не создается, и API становится непригодным для использования даже для общедоступного контента. Я, очевидно, хочу показывать альбомы всем, а не только тем, кто подключает их аккаунты.
Как все функции в API Facebook работают? Какое лучшее (проще реализовать) обходное решение для этой ситуации?
Ответы
Ответ 1
По состоянию на сентябрь 2010 года вы можете аутентифицироваться как приложение, не связанное с ним. Подробнее см. http://developers.facebook.com/docs/authentication/. Или вы можете запустить этот примерный код, чтобы получить токен доступа:
curl -F grant_type=client_credentials \
-F client_id=your_app_id \
-F client_secret=your_app_secret \
https://graph.facebook.com/oauth/access_token
Ответ 2
Для записи мне удалось решить эту ситуацию, разработав небольшой бэкэнд, который требует от клиента входа в Facebook один раз и предоставить offline_access
расширенное разрешение в приложение FB, поэтому я могу сохранить его ключ сеанса и использовать его для аутентификации клиента API Facebook каждый раз, когда мне нужно использовать FQL для получения непубличного контента.
Очевидно, можно добавить некоторое кэширование в середине, чтобы избежать ненужных запросов в Facebook, но он работает отлично уже несколько месяцев, не нажимая никаких ограничений, о которых я знаю.
Ответ 3
Это не имеет смысла для меня - у меня есть (относительно простое) приложение, которое отображается в facebook, даже если пользователь никогда не вошел в facebook раньше (в этом случае он отображает демонстрационные данные).
При использовании библиотеки PHP facebook я просто делаю это:
$facebook = новый Facebook ($ api_key, $secret);
Не требуется идентификатор сеанса, но, очевидно, функции api, которые зависят от информации о пользователе, не будут работать.
Вы также можете посмотреть "бесконечный сеанс" для своего приложения - вы можете создать для себя бесконечный ключ сеанса и использовать этот сеанс для доступа к API.