Подтвердить что ты не робот

Каков правильный способ обновления токена доступа к Facebook OAuth2 после истечения срока его действия?

Как я понимаю, это основной процесс для новых приложений iframe Facebook iframe с использованием API OAuth2 в двух словах:

  • Перенаправление на URL-адрес авторизации приложения (или URL-адрес пользователя)
  • Пользователь авторизует и перенаправляется на ваш URL обратного вызова
  • В обратном вызове используется параметр "code", чтобы получить токен доступа
  • Маркер доступа используется с API-интерфейсом Graph, чтобы извлекать или перемещать информацию.

Проблема в том, что токены доступа истекают относительно быстро и нуждаются в "обновлении", поэтому мои вопросы: 1) как вы обнаруживаете, что токен истек, не пытаясь его использовать, и просто получить сообщение об ошибке? и 2) какова наилучшая практика для получения нового токена?

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

4b9b3361

Ответ 1

  • Единственный способ узнать, является ли cookie действительным, - использовать его и уловить ошибку, если она истекла. Нет способа опроса или чего-либо еще, чтобы проверить, действительно ли токен.

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

Короче говоря, для этого нет никаких трюков. Вы уже делаете это правильно.

Ответ 2

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

https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN 

Подробнее см. здесь https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal

Ответ 3

//you just need more step because the access token you are getting will expire in 1 hour
    //you can overcome this in step 5

    1-Redirect to (or have user click link to) app authorization URL
2-User authorizes and is redirected to your callback URL
3-Callback uses "code" parameter to get a access token
4-Access token is used with Graph API to pull or push information
    5-exchange short-lived access token you just got with 60 day access token
    https://graph.facebook.com/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN
    6-after 60 day the user must login again to your app and the steps from 1-5 will be repeated.
    --the real problem you will face is how to make the user visit your app page again

Ответ 4

Facebook удалил функцию обновления токена доступа в режиме "от имени". Лучшим и простым способом является перенаправление пользователя на страницу входа в facebook для повторного запуска приложения. Найти facbook doc здесь

Ответ 5

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

Ответ 6

{   "ошибка": {      "message": "Отсутствует параметр redirect_uri.", "type": "OAuthException", "code": 191, "fbtrace_id": "BHvng7s53ra" }}