Vì lý do bảo mật, thời gian hết hạn ngắn và không thể thay đổi. Tuy nhiên, bạn có thể mở rộng ủy quyền của người dùng mà không cần tương tác với người dùng bằng cách sử dụng hàm refresh_token. Về cơ bản, như một phản ứng với auth trao đổi mã, máy chủ cung cấp refresh_token mà trông như thế này:
{
"access_token" : "ya29.AHES6ZTtm7SuokEB-RGtbBty9IIlNiP9-eNMMQKtXdMP3sfjL1Fc",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74"
}
Khi thẻ hết hạn, tất cả các bạn phải làm là sử dụng refresh_token để phép lại, mà không cần tương tác người dùng. Như thế này:
POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded
client_id=21302922996.apps.googleusercontent.com&
client_secret=XTHhXh1SlUNgvyWGwDk1EjXB&
refresh_token=1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74
grant_type=refresh_token
Để làm cho mọi việc đơn giản hơn, khi bạn đang sử dụng Python, bạn thậm chí không phải quan tâm đến refresh_token nếu bạn đang sử dụng Credentials class từ google-api-python-client. Chỉ cần sử dụng Credentials.authorize() và nó sẽ tự động cho phép hoặc làm mới mã thông báo dựa trên trạng thái của bạn.
Nguồn
2013-06-12 15:43:27
Cảm ơn! Điều này hữu ích và đây cũng là nơi Google cũng gửi yêu cầu làm mới: https://developers.google.com/identity/protocols/OAuth2WebServer#offline – JJC