Я знаю, что есть много вопросов о токенах Facebook и о печали, которые они вызывают, но, несмотря на множество экспериментов и чтение многих расстраивающих смутных статей в блогах (FB и др.), я все еще пытаюсь получить четкий ответ к моим потребностям. Позвольте мне кратко изложить мой процесс до сих пор:
- Я создаю сайт, который на стороне сервера должен вытаскивать сообщения/статусы с одной страницы Facebook.
- Я являюсь администратором этой страницы Facebook.
- Я создал приложение для Facebook.
- Используя API-интерфейс Google Graph API, я создал короткий ключ, подключенный к моему приложению и моей учетной записи, который предоставляет разрешение на мою учетную запись, чтобы просмотреть токены доступа для моих страниц.
- Я преобразовал свой краткосрочный ключ в долгоживущий ключ (60 дней) по сценарию 4 из this
И здесь, где я застрял. Мой 60-дневный ключ отлично работает для моего сервера, чтобы вытащить информацию, необходимую на странице, но, насколько я могу судить, нет возможности программно расширить этот 60-дневный ключ. Я также не знаю, как создать новый недолговечный ключ, не запустив вручную API-интерфейс API-интерфейса Facebook и создав его.
Поскольку мой сервер делает запросы API Facebook, а не пользовательскую систему (где я мог бы легко запросить авторизацию приложения Facebook снова), это создает очень неуклюжую систему. Поскольку Facebook устарел offline_access
, действительно ли нет постоянного способа получить информацию о моем сервере с моей собственной страницы? Должен ли я действительно создать новый ключ вручную и вручную обновить его сервер каждые 60 дней?
Или что-то мне не хватает?
Update:
Пошаговое руководство, которое ранее было найдено здесь, было перенесено в свой собственный ответ.
Ответ 1
Это те шаги, которые были ранее в вопросе - они были перенесены на этот ответ.
Обнаружив, что можно создать токен доступа к странице Facebook, который не истекает (с помощью @Igy), вот ясное, пошаговое условие для всех, кто смотрит на то же самое:
- Убедитесь, что вы являетесь администратором страницы FB, с которой вы хотите получить информацию из
- Создайте приложение FB (должно быть с той же учетной записью пользователя, которая является администратором страницы).
- Перейдите к API-интерфейсу Google Graph API
- В правом верхнем углу выберите приложение FB, созданное в раскрывающемся списке "Приложение"
- Нажмите "Получить токен доступа"
- Убедитесь, что вы добавили разрешение
manage_pages
- Преобразовать этот краткосрочный токен доступа в долгоживущий, сделав этот вызов Graph API:
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>
- Получить новый долговременный токен доступа, возвращенный
- Сделайте вызов API Графа, чтобы увидеть ваши учетные записи, используя новый долгоживущий токен доступа:
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
- Возьмите
access_token
для страницы, на которую вы будете получать информацию из
- Lint, чтобы увидеть, что он установлен на
Expires: Never
!
Это должно сделать это. Теперь у вас должен быть токен доступа к странице Facebook, который не истекает, если:
- Вы меняете свой пароль учетной записи Facebook.
- Вы теряете доступ администратора для целевой страницы
- Вы удаляете или деактивируете свое приложение для Facebook.
Любое из них приведет к тому, что токен доступа станет недействительным.
Если вы получаете (#100) Tried accessing nonexisting field (accounts) on node type (Page)
, перейдите в Access Token Debugger, скопируйте значение User ID
и используйте его для замены "я" часть URL-адреса на шаге 9.
Ответ 2
Об этом говорится в документе Отказ от автономной работы
Используйте 60-дневный токен для администратора страницы, чтобы получить токен доступа к странице (через /PAGE_ID?fields=access_token
или /me/accounts
) - токен доступа к странице не будет иметь время истечения срока действия
Ответ 3
Большое спасибо @redhotvengeance за пошаговое руководство.
По прошествии некоторого времени теперь в документации на Facebook четко указано:
https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension
Расширение токенов доступа к странице
Приложения могут извлекать токен доступа к странице из пользователей Page admin, когда они аутентифицироваться с помощью разрешения manage_pages. Если пользователь получает доступ токен, используемый для получения этого токена доступа к странице, недолговечен, страница токен доступа также будет недолговечным.
Чтобы получить токен доступа к более долговечному доступу, обменивайтесь доступом пользователя токен для долговечного, как указано выше, а затем запросить доступ к странице маркер. Результирующий токен доступа к странице не будет иметь никакого срока действия.
Ответ 4
Вы также можете скопировать и пройти из панели инструментов приложения на facebook.
Шаги:
Имейте в виду, что теоретически ваш токен не истечет, что он напрямую связан с тем, что когда-либо было зарегистрировано в вашей учетной записи facebook. Скажите, что вы меняете свой пароль или удаляете разрешения между своей учетной записью и вашим приложением, тогда ваш токен больше не будет действителен.