Я знаю, что есть много вопросов о токенах доступа Facebook и горе, которое они вызывают, но, несмотря на множество экспериментов и чтение множества разочаровывающих расплывчатых статей в блогах (FB и других), я все еще пытаюсь получить четкий ответ на свои нужды. , Позвольте мне кратко изложить мой процесс:
- Я создаю сайт, который на стороне сервера должен извлекать сообщения / статусы с одной страницы Facebook.
- Я администратор этой страницы в Facebook
- Я создал приложение Facebook
- Используя Facebook Graph API Explorer , я сгенерировал кратковременный ключ, связанный с моим приложением и моей учетной записью, который предоставляет моей учетной записи разрешение на просмотр токенов доступа для моих страниц.
- Я преобразовал свой краткосрочный ключ в долгоживущий (60 дней), как сценарий 4 из этого
И вот где я застрял. Мой 60-дневный ключ отлично работает для моего сервера, чтобы получить необходимую информацию со страницы, но, насколько я могу судить, нет никакого способа программно продлить этот 60-дневный ключ. Я также не знаю, как сгенерировать новый недолговечный ключ без ручного перехода в Facebook Graph API Explorer и его создания.
Поскольку это мой сервер, который выполняет запросы к API Facebook, а не система на основе пользователя (где я мог бы легко запросить, чтобы пользователь снова авторизовал приложение Facebook), это создает очень неуклюжую систему. Поскольку Facebook устарел offline_access
, действительно ли нет постоянного способа, чтобы мой сервер извлекал информацию с моей собственной страницы? Действительно ли мне придется создавать новый ключ вручную и вручную обновлять им свой сервер каждые 60 дней?
Или что-то мне не хватает?
Обновить:
Пошаговое руководство, которое ранее было найдено здесь, было перенесено в отдельный ответ .
источник
Ответы:
Обнаружив, что можно сгенерировать токен доступа к странице Facebook, срок действия которого не истекает (с помощью @Igy), вот четкое пошаговое руководство для всех, кто хочет того же:
manage_pages
разрешениеhttps://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
access_token
страницу, с которой будете получать информациюExpires: Never
!Это должно сработать. Теперь у вас должен быть токен доступа к странице Facebook, срок действия которого не истекает, если:
Любой из них приведет к тому, что токен доступа станет недействительным.
Если вы получаете
(#100) Tried accessing nonexisting field (accounts) on node type (Page)
, перейдите в отладчик токена доступа , скопируйте значениеUser ID
и используйте его для замены части URL-адреса «я» на шаге 9.источник
manage_pages
Вариант находится подExtended Permissions
вкладкой.Это описано в документе об отказе от автономного доступа.
Используйте 60-дневный токен для администратора страницы, чтобы получить токен доступа к странице (через
/PAGE_ID?fields=access_token
или/me/accounts
) - токен доступа к странице не будет иметь срока действияисточник
page_access_token
помощью кода в javascript? Нравится способ полученияuser_access_token
>FB.getAuthResponse()['accessToken'];
Спасибо!Подход, который работает в 2019 году
Недавно я пытался добиться чего-то похожего (к примеру использования, описанному в этой ветке), но я хотел убедиться, что соблюдаю текущую политику Facebook, поэтому я провел небольшое исследование и делюсь тем, что нашел.
Мой вариант использования
Итак, как я уже сказал, мой вариант использования очень похож на описанный здесь; то есть:
На мой взгляд, это законный вариант использования, но я не знал, как реализовать его в соответствии с политиками Facebook.
Принятый ответ
Я выполнил шаги принятого ответа, и он сработал, за исключением того, что, похоже, все изменилось: теперь, даже если срок
access to data
действия сгенерированного токена страницы не истекает, он истекает примерно через 60 дней. Вы также увидите это, если выполните процедуру и проверите токен страницы в FB Token Debugger Tool .Кроме того, тот факт, что сгенерированные токены страницы привязаны к учетной записи пользователя, также прискорбен, потому что, если пользователь обновляет свой пароль, токен страницы также становится недействительным.
Как это сделать в 2019 году
После нескольких часов исследования я наткнулся на следующую статью документации Facebook: Business Login for Direct Business .
Оказывается, теперь можно, следуя шагам, описанным в приведенной выше статье, сгенерировать токен страницы, который не связан с какой-либо конкретной учетной записью пользователя Facebook и срок действия которого не истечет (если только приложение FB не будет удалено или базовый токен приложения удаляется, понимаете ...)
Итак, вот шаги и самые важные части:
manage_pages
иpublish_pages
.Срок действия этого токена никогда не истечет, и он не будет привязан к конкретному пользователю Facebook, так что это именно то, что нам нужно!
Последняя часть - убедиться, что ваше приложение Facebook одобрено Facebook. Фактически, это самая важная часть, потому что вся процедура бесполезна, если люди не видят наши сообщения.
Я хотел знать наверняка, что могу положиться на описанную выше процедуру, чтобы создать что-то для моего клиента без отклонения Facebook в конце, поэтому заранее (т.е. перед тем, как начать работу над проектом моего клиента), я прошел весь процесс создание страницы, приложения, учетной записи Business Manager и т. д. Я подтвердил свой бизнес. Я отправил свое приложение на проверку. В моем запросе я очень конкретизировал свой вариант использования и подчеркнул, что приложение предназначено для «самостоятельного использования» (т. Е. Что организация разрабатывает приложение для себя, а не для других пользователей Facebook). Я получил одобрение менее чем за 24 часа.
Еще несколько примечаний о процессе проверки приложения:
curl
утилиты (для генерации токена страницы и публикации сообщений на странице Facebook). Я также показал, как использую Business Manager, чтобы связать системного пользователя со страницей, создать токен и так далее.Надеюсь, эта информация будет полезна людям с похожими вариантами использования.
источник
Большое спасибо @redhotvengeance за пошаговое руководство.
Спустя какое-то время теперь в документации Facebook четко описано:
https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension
источник
Вы также можете скопировать и вставить из панели управления приложения на Facebook. Шаги:
Перейдите на https://developers.facebook.com
Выберите свое приложение в правом верхнем углу страницы (рис. Как оно выглядит)
Имейте в виду, что хотя теоретически ваш токен не истечет, он напрямую привязан к той учетной записи facebook, в которую вы вошли. Скажем, вы изменили свой пароль или удалили разрешения между своей учетной записью и приложением, тогда ваш токен больше не будет действителен.
источник