it-swarm.com.ru

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

Я знаю, что есть много вопросов о фишках доступа к Facebook и о горе, которое они вызывают, но, несмотря на большие эксперименты и чтение множества разочаровывающих смутных статей в блогах (FB и другие), я все еще пытаюсь получить четкий ответ на свои нужды , Позвольте мне кратко сломать мой процесс до сих пор:

  • Я создаю сайт, который на стороне сервера должен извлекать сообщения/статусы с одной страницы Facebook.
  • Я администратор этой страницы Facebook
  • Я создал приложение для Facebook
  • Используя Facebook Graph API Explorer , я сгенерировал недолговечный ключ, связанный с моим приложением и моей учетной записью, который дает разрешение моей учетной записи на просмотр токенов доступа для моих страниц.
  • Я преобразовал свой недолговечный ключ в сценарий 4 с длительным сроком действия (60 дней) из this

И вот где я застрял. Мой 60-дневный ключ отлично работает для моего сервера, чтобы получить необходимую информацию со страницы, но, насколько я могу судить, нет никакого способа программно расширить этот 60-дневный ключ. Я также не знаю, как создать новый недолговечный ключ, не заходя вручную в Facebook Graph API Explorer и не создавая его.

Поскольку мой сервер выполняет запросы к API Facebook, а не к пользовательской системе (где я мог бы легко попросить пользователя снова авторизовать приложение Facebook), это создает очень неуклюжую систему. Поскольку Facebook устарел offline_access, действительно ли не существует постоянного способа, чтобы мой сервер извлекал информацию со своей собственной страницы? Нужно ли мне создавать новый ключ вручную и обновлять его вручную каждые 60 дней?

Или мне чего-то не хватает?

Update:

Пошаговое руководство, которое было найдено ранее, перенесено в свое собственное ответ .

111
redhotvengeance

Это шаги, которые были ранее в вопросе - они были перенесены в этот ответ.

Обнаружив, что можно сгенерировать токен доступа к странице Facebook, срок действия которого не истекает (с помощью @Igy), вот четкое пошаговое руководство для всех, кто ищет то же самое:

  1. Убедитесь, что вы являетесь администратором страницы FB, с которой хотите получить информацию
  2. Создать приложение FB (должно быть с той же учетной записью пользователя, что и администратор страницы)
  3. Перейдите в Facebook Graph API Explorer
  4. В правом верхнем углу выберите приложение FB, которое вы создали, из раскрывающегося списка "Приложение".
  5. Нажмите "Получить токен доступа"
  6. Убедитесь, что вы добавили разрешение manage_pages
  7. Преобразуйте этот недолговечный токен доступа в долгоживущий с помощью вызова API Graph: 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>
  8. Возьмите новый долгоживущий токен доступа, возвращенный обратно
  9. Выполните вызов API Graph для просмотра ваших учетных записей с использованием нового маркера долговременного доступа: https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  10. Возьмите access_token для страницы, с которой вы будете получать информацию
  11. Lint токен, чтобы увидеть, что он установлен в Expires: Never!

Это должно сделать это. Теперь у вас должен быть токен доступа к странице Facebook, срок действия которого не истекает, если:

  • Вы меняете пароль к своей учетной записи Facebook
  • Вы теряете доступ администратора для целевой страницы
  • Вы удаляете или деавторизируете свое приложение Facebook

Любой из них приведет к тому, что токен доступа станет недействительным.

Если вы получаете (#100) Tried accessing nonexisting field (accounts) on node type (Page), перейдите к Access Token Debugger , скопируйте значение User ID и используйте его для замены части "me" в URL-адресе на шаге 9.

181
redhotvengeance

Это описано в документе Устаревание автономного доступа

Используйте 60-дневный токен для администратора страницы, чтобы получить токен доступа к странице (через /PAGE_ID?fields=access_token или /me/accounts) - токен доступа к странице не будет иметь срока действия

15
Igy

Большое спасибо @redhotvengeance за пошаговое руководство.

Через некоторое время теперь в Фейсбуке четко описано:

https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

Расширение токенов доступа к странице

Приложения могут получить токен доступа к странице от пользователей администратора страницы, когда они проходят аутентификацию с разрешением manage_pages. Если токен доступа пользователя, используемый для получения этого токена доступа к странице, является недолговечным, токен доступа к странице также будет недолговечным.

Чтобы получить долгосрочный токен доступа к странице, замените токен доступа пользователя на долгоживущий, как указано выше, а затем запросите токен доступа к странице. Полученный токен доступа к странице не будет иметь никакого срока действия.

1
Athlan

Вы также можете скопировать и вставить из панели приложения на Facebook. Шаги:

  1. Перейти на https://developers.facebook.com

  2. Выберите свое приложение в верхнем правом углу страницы (рис. Как это выглядит)

  3. Нажмите на Messenger из опций слева (он перейдет к настройке автоматически) (рис. Как это выглядит)
  4. Перейдите в раздел "Создание токенов" на странице. Выберите, для какой страницы вы хотите сгенерировать токен. (рис. того, на что похож этот раздел)
  5. Скопируйте и пройдите маркер вашей страницы, где бы он вам ни понадобился.

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

0
Heidi