Я разрабатываю сайт для клиента, у которого уже есть фотографии своих продуктов на 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.