Oto informacje o odświeżaniu tokenu OAuth 2.0.
wygaśnięcia przy definiowaniu
Standardowe OAuth 2.0 RFC 6749 określa pole expires_in
jako liczbę sekund upływu:
expires_in: zalecane. Czas życia w sekundach token dostępu. Na przykład wartość "3600" oznacza, że token dostępu wygaśnie w ciągu jednej godziny od czasu wygenerowania odpowiedzi. Jeśli zostanie pominięty, serwer autoryzacji POWINIEN podawać czas wygaśnięcia za pomocą innych środków lub udokumentować wartość domyślną.
Reklamowe Odśwież obchodzenia się: Metoda 1
Po otrzymaniu prawidłowej wartości access_token
, expires_in
, refresh_token
itd klienci mogą przetwarzać ten przechowując zakresu czasu i sprawdzenie go na każde żądanie. Można to zrobić za pomocą następujących czynności:
- nawróconego
expires_in
do czasu wygaśnięcia (epoki, datetime ISO, etc.)
- przechowywać upływa czas
- na każde żądanie zasobów, sprawdzić aktualną godzinę przed wygaśnięciem czasu i zrobić tokenu żądania odświeżenia przed żądanie zasobu jeśli
access_token
wygasła
oprócz otrzymania nowego access_token
może pojawić nowy refresh_token
z czasem ważności f w przyszłości. Jeśli to otrzymasz, powinieneś zapisać nowy refresh_token
, aby przedłużyć żywotność swojej sesji.
Reklamowe Odśwież obchodzenia się: Metoda 2
Innym sposobem obsługi tokenu odświeżania jest ręcznie odświeżyć po otrzymaniu nieprawidłowy błąd tokena. Można to zrobić za pomocą poprzedniego podejścia lub samodzielnie.
Jeśli spróbujesz użyć wygasłego access_token
, a otrzymasz błąd nieprawidłowego tokena, powinieneś wykonać odświeżenie tokena (jeśli token odświeżania jest nadal ważny). Ponieważ różne usługi mogą wykorzystywać różne kody błędów dla wygasłych tokenów, możesz albo śledzić kod dla każdej usługi, albo prosty sposób na odświeżenie tokenów w różnych usługach to po prostu spróbuj jednego odświeżenia po napotkaniu błędu 4xx.
Nieprawidłowy token dostępu Błędy
Poniżej znajdują się niektóre kody błędów z popularnych usług:
- Facebook: Error 467 Invalid access token - Dostęp tokena wygasła, został unieważniony, lub w inny sposób nieprawidłowy - Handle wygasłe tokeny dostępu.
- LinkedIn: Error 401 Unauthorized.
- PayPal: Error 401 Unauthorized.
Odśwież Reklamowe ważności
Jeśli refresh_token
wygasła również, trzeba będzie przejść przez proces autoryzacji ponownie.
Witam, wielkie dzięki za odpowiedź! Podczas sprawdzania czasu wygaśnięcia, co jeśli użytkownik zmieni czas urządzenia? Czy nie spowoduje zbyt częstego odświeżania tokenu dostępu? A jeśli chodzi o sprawdzenie błędu nieprawidłowego tokena, czy masz jakiś pomysł na kod odpowiedzi i format błędu, który zwróci serwer OAuth? I czy będzie to odpowiedź błędu dla wszystkich serwerów OAuth? – XiOS
Jakie są przypadki użycia w przypadku często występujących zmian czasu urządzenia? Zmiany strefy czasowej powinny być obsługiwane automatycznie. Ponieważ nieprawidłowy kod błędu tokena nie jest zdefiniowany w standardzie, różne usługi wybrały różne kody błędów wymienione powyżej. Prostym podejściem odświeżania może być próba pojedynczego odświeżenia po wystąpieniu błędu 4xx, jak wspomniano. – Grokify