Долгосрочный токен доступа FB для сервера, чтобы вывести информацию о странице FB

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