API Facebook без аутентификации клиента для публичного контента

StackOverflow https://stackoverflow.com/questions/1000773

Вопрос

Я разрабатываю сайт для клиента, у которого уже есть фотографии его продуктов в Facebook, и он хочет, чтобы те же альбомы были скопированы на его сайт. Я уже использовал Facebook Connect, поэтому я добавил комбинацию photos.getAlbums и photos.get для динамического создания галерей.

Пока все хорошо, но потом я понял, что если в FBC не зарегистрировано пользователя, сеанс не создается, и API становится непригодным для использования даже для общедоступного контента. Я, очевидно, хочу показать альбомы всем, а не только людям, которые подключают свои аккаунты.

Так ли работают все функции в API Facebook? Как лучше (проще реализовать) обходной путь для этой ситуации?

Это было полезно?

Решение

По состоянию на сентябрь 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

Другие советы

Для справки, мне удалось решить эту ситуацию, разработав небольшой бэкэнд, который требует от клиента один раз войти в Facebook и дать offline_access расширенное разрешение для приложения FB, поэтому я могу сохранить его ключ сеанса и использовать его для аутентификации клиента API Facebook каждый раз, когда мне нужно использовать FQL для получения непубличного контента.

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

Это не имеет смысла для меня - у меня есть (относительно простое) приложение, которое отображает в Facebook, даже если пользователь никогда ранее не заходил в Facebook (в этом случае он отображает демонстрационные данные).

При использовании PHP-библиотеки facebook я просто делаю это:

$ facebook = новый Facebook ($ api_key, $ secret);

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top