It seems that OAuth 2.0 has 2 different types of tokens.
1: access tokens
2: refresh tokens
According to the Google doc for "API Client Library for Python: Getting Started" ...
When a user grants your application access, the OAuth 2.0 authorization server provides your application with refresh and access tokens. These tokens are only valid for the scope requested. Your application uses access tokens to authorize API calls. Access tokens expire, but refresh tokens do not. Your application can use a refresh token to acquire a new access token.
On the surface, this sounds like unnecessary complexity to me.
Simple is better than complex.
Why do we need 2?
What is gained by the additional complexity of having to manage 2?