Nie widzę niczego w google_oauth2
, które obsługuje pobieranie nowego access_token
za pomocą odświeżającego tokena, więc wygląda na to, że musisz dokonać wymiany bezpośrednio.
Google's official OAuth 2.0 documentation wyjaśnia, jak to zrobić na niskim poziomie. W kodzie po stronie serwera, użyj swojego ulubionego klienta HTTP skonstruować wniosek, który wygląda tak:
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET&
refresh_token=REFRESH_TOKEN&
grant_type=refresh_token
gdzie CLIENT_ID
i CLIENT_SECRET
są takie same te, które stosowane do pierwotnego uwierzytelniania i REFRESH_TOKEN
jest token odświeżania z oryginalny przepływ uwierzytelniania. Jeżeli wymiana jest sukces, otrzymasz token dostępu świeżego w odpowiedzi, który wygląda mniej więcej tak:
{
"access_token":"1/fFBGRNJru1FQd44AzqT3Zg",
"expires_in":3920,
"token_type":"Bearer",
}
Możesz śledzić ten proces, aby pobrać nowy żeton dostępu, gdy zajdzie taka potrzeba. Możesz użyć wartości expires_in
, aby oszacować, kiedy będziesz potrzebować nowej, lub spróbować odświeżyć, gdy żądanie API odpowie na stan HTTP 401.
gdzie zaimplementujesz to w swojej aplikacji rails? na przykład Mam żądanie pobierania, aby pobrać kontakty użytkowników za pomocą httparty, który wysyła token, jak powiedziałbym po opublikowaniu tokena odświeżania, jeśli token wygasł? – Richlewis
Kod, który napisałem powyżej, to kod, który wykonuje żądanie POST, aby odświeżyć token. Po wykonaniu żądania GET sprawdziłbym, czy kod odpowiedzi jest równy 401, czyli zazwyczaj kod, który otrzymasz, gdy chcesz odświeżyć token. Jeśli kod odpowiedzi HTTParty == 401 uruchomi mój kod (dostosowany do twoich potrzeb). – Blake
świetnie, ale pracuję, dziękuję – Richlewis