Токены доступа к странице Facebook - истекают ли они?

Я создаю приложение, которое позволяет пользователям администрировать свои страницы поклонников Facebook. Для этого требуются следующие два токена доступа:

  • Ток доступа пользователя
  • Ток доступа к странице

Я хорошо знаком с токенами доступа к Интернету, но не с токенами доступа к странице.

Знает ли кто-нибудь, как долго токен доступа к странице остается в силе? Все, что я могу найти на веб-сайте Facebook, этот краткий абзац, который ничего не говорит об истечении срока его действия.

Могу ли я предположить, что если я запрашиваю токен доступа пользователя с разрешением offline_access, токен доступа к странице также будет длиться бесконечно (если пользователь не изменит свой пароль или не выполнит мое собственное приложение вручную)?

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

Ответ 1

Токены страницы истекают, когда токен доступа истекает для пользователя, из которого был создан маркер страницы. Изменить 6.28.2013: Если вы расширяете токен доступа пользователя и получаете новый токен доступа к странице для пользователя, этот токен не истечет, если пользователь не отменяет авторизацию вашего приложения.

Автономный доступ теперь устарел, но вам разрешено продлить токен доступа до 60 дней. Если вы продлеваете токен доступа пользователя, то токены страницы, созданные из этой учетной записи пользователя , также будут иметь срок действия, указанный для соответствия, не истечет (отредактировано 6.28.2013). Значение для токенов страницы может измениться после расширения, поэтому не забудьте захватить новые токены страницы из пользовательского графического соединения /accounts после расширения токена пользователя.

Вы можете продолжать распространять эти токены доступа один раз в день. Таким образом, вы должны каждый день обновлять токены доступа, которые пользователь взаимодействует с вашим приложением.

См https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens https://developers.facebook.com/docs/facebook-login/access-tokens/#extending https://developers.facebook.com/docs/facebook-login/
https://developers.facebook.com/roadmap/offline-access-removal/ https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/

Ответ 2

Установив, что можно создать токен доступа к странице Facebook, срок действия которого не истекает, вот ясное, пошаговое решение для всех тех, кто смотрит на одну и ту же проблему:

  • Убедитесь, что вы являетесь администратором страницы FB, с которой вы хотите получить информацию из
  • Создайте приложение FB (должно быть с той же учетной записью пользователя, которая является администратором страницы).
  • Перейдите к API-интерфейсу API графиков Facebook.
  • В правом верхнем углу выберите приложение FB, созданное в раскрывающемся списке "Приложение"
  • Нажмите "Получить токен доступа пользователя" (Orginally был "Получить токен доступа" )
  • Убедитесь, что вы добавили разрешение manage_pages
  • Преобразуйте этот токен с краткосрочным доступом в долгоживущий, сделав этот вызов 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>

  • Перенесите новый долгоживущий токен доступа обратно

  • Сделайте вызов API Графа, чтобы увидеть ваши учетные записи, используя новый токен долгого доступа: https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  • Возьмите access_token для страницы, на которую вы будете получать информацию из
  • Нарисуйте маркер, чтобы увидеть, что он установлен на Expires: Never!

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

Ответ 3

Вы можете расширить токен доступа к странице, чтобы он никогда не заканчивался. Документация немного грязная, но на следующих страницах есть соответствующая информация, и вам, очевидно, нужно будет быть администратором этой страницы. Обратите особое внимание на сценарии 4 и 5 во второй ссылке.

https://developers.facebook.com/docs/reference/api/page/#page_access_tokens https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token

Простое использование графического проводника для извлечения токенов из Facebook. Графический проводник также позволяет вам отлаживать токен, который будет указывать дату истечения срока действия, таким образом вы можете проверить, что он никогда не истекает. Графический проводник: https://developers.facebook.com/tools/explorer

Нажмите кнопку "Получить маркер доступа", чтобы получить токен. Сохраняя свой идентификатор в панели запросов, просто добавьте/учетные записи в свой идентификатор, чтобы он выглядел следующим образом: /123456789101112/accounts. Убедитесь, что это запрос GET (раскрывающийся список слева от строки запроса).

Это приведет к восстановлению всех страниц, с которыми вы настроили работу. Затем вам необходимо сделать запрос GET:

/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN 

Ваши APP_ID и APP_SECRET можно найти в настройках администрирования ваших приложений. Используйте свой токен доступа в качестве конечного параметра (EXISTING_ACCESS_TOKEN). Это вернет 60-дневный токен доступа. Скопируйте этот токен в панель токена доступа, которая находится над панелью запросов. Теперь сделайте запрос GET для USER_ID/учетных записей, как это было сделано в начале. Это снова вернет список страниц, с которыми вы настроены для работы.

Но на этот раз токены страницы, перечисленные со страницами, не истекают. Вы можете проверить это, скопировав токен страницы в панель токена доступа и нажав кнопку "Отладка". Это даст вам подробную информацию об этом токене доступа, включая время истечения срока действия, которое в этом случае никогда не должно быть.

UPDATE

Я также обнаружил, что проводник графики Facebook иногда путается с пользовательским контекстом и может быть ненадежным в любое время. Альтернативы Fiddler или Postman.

Ответ 4

Я не уверен, что в facebook внесены изменения, чтобы исправить эти ошибки или нет, но кажется, что токены доступа пользователя не истекают после того, как токены доступа к странице предоставлены пользователю. Основываясь на моем тестировании, поток выглядит примерно так:

  • Запрошен токен доступа пользователя → 60-дневный токен пользователя
  • Запрошенные токены доступа к странице → выпущены токены доступа к странице, которые никогда не истекли, а первичный токен доступа пользователя обновлен, чтобы никогда не истекать.

Надеюсь, что это немного смущает. Я тестировал это со многими разными пользователями в нашем приложении и каждый раз вижу одно и то же.

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

Ответ 5

Ток доступа к странице Facebook очень похож на токен доступа пользователя, за исключением того, что "он олицетворяет пользователя" в качестве администратора страницы и позволяет управлять им. [требуется разрешение для управляющей страницы].

Если для приложения установлено разрешение автономной_акции, страница access_token не будет истекать (если пользователь не изменит свой пароль или не выполнит вручную приложение)

Используйте следующую ссылку, чтобы проверить детали выданного токена доступа.

https://developers.facebook.com/tools/debug/

Ответ 6

Смотрите https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token В соответствии с этим, когда вы получаете кратковременный токен доступа и расширяете его до долгого токена доступа, это не приведет к истечению срока действия только для токена доступа к странице. См. Сценарий 5: токен доступа к странице

Ответ 7

Документация по этому вопросу в Facebook (долгоживущие токены доступа к странице) не соответствует тому, что происходит в действительности. В документации утверждается, что токены доступа к страницам, полученные через токены доступа с расширенным/долговременным доступом, никогда не истекают. Однако на самом деле эти токены доступа к странице истекают через 60 дней.

Смотрите ошибку Facebook: http://developers.facebook.com/bugs/461517520524921

Ответ 8

  • Значок доступа к странице по умолчанию недолговечен, и срок их действия истекает через 1 или 2 часа. Если вы хотите сделать это дольше, вам нужно увеличить срок действия краткосрочного токена доступа, чтобы он продолжался примерно 2 месяца.
  • Разрешение offline_access теперь устарело.
  • Маркер доступа не истекает, когда пользователь изменяет пароль.

В другом вопросе я объясняю Как продлить токен доступа к странице.

Ответ 9

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

Отметьте мой блог и следуйте пошаговой инструкции по получению доступа к токену доступа и получения доступа к файловой странице жетоны.