Жетоны доступа к странице Facebook - срок их действия истек? - PullRequest
71 голосов
/ 08 октября 2011

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

  1. токен доступа пользователя
  2. токен доступа к странице

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

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

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

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

Ответы [ 8 ]

43 голосов
/ 18 февраля 2012

Срок действия токенов страницы истекает, когда срок действия токена доступа истекает для пользователя, из которого был создан токен страницы. Изменить 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/

12 голосов
/ 12 февраля 2013

Вы можете продлить токен доступа к странице, чтобы он никогда не истек. Документация немного мутная, но на следующих страницах есть соответствующая информация, и вам, очевидно, нужно быть администратором страницы. Обратите особое внимание на сценарии 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. Кроме того, в графическом обозревателе можно отлаживать токен, в котором будет указана дата истечения срока действия, поэтому вы можете проверить, что он никогда не истекает. График Explorer: https://developers.facebook.com/tools/explorer

Нажмите кнопку «Получить токен», чтобы получить свой токен. Сохраняя свой идентификатор в строке запроса, просто добавьте / account к вашему идентификатору, чтобы он выглядел так: /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 / account, как мы делали в начале. Это снова вернет список страниц, с которыми вы настроены для работы.

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

UPDATE

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

4 голосов
/ 29 января 2013

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

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

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

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

2 голосов
/ 12 октября 2011

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

Если приложению предоставлено разрешение Offline_access, срок действия страницы access_token НЕ БУДЕТ (если пользователь не изменит свой пароль или не деавторизирует приложение вручную)

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

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

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

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

1 голос
/ 29 июня 2012

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

См. Ошибку Facebook: http://developers.facebook.com/bugs/461517520524921

1 голос
/ 14 мая 2012

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

0 голосов
/ 11 ноября 2012

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

Извлеките мой блог и выполните шагпошаговая инструкция получения токена расширенного доступа и получения токенов доступа к фан-странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...