code: def refresh_access_token(credential):
      
      if credential.grant_type == auth.AUTHORIZATION_CODE_GRANT:
          response = _request_access_token(
              grant_type=auth.REFRESH_TOKEN,
              client_id=credential.client_id,
              client_secret=credential.client_secret,
              redirect_url=credential.redirect_url,
              refresh_token=credential.refresh_token,
          )
  
          oauth2credential = OAuth2Credential.make_from_response(
              response=response,
              grant_type=credential.grant_type,
              client_id=credential.client_id,
              client_secret=credential.client_secret,
              redirect_url=credential.redirect_url,
          )
  
          return Session(oauth2credential=oauth2credential)
  
      elif credential.grant_type == auth.CLIENT_CREDENTIALS_GRANT:
          response = _request_access_token(
              grant_type=auth.CLIENT_CREDENTIALS_GRANT,
              client_id=credential.client_id,
              client_secret=credential.client_secret,
              scopes=credential.scopes,
          )
  
          oauth2credential = OAuth2Credential.make_from_response(
              response=response,
              grant_type=credential.grant_type,
              client_id=credential.client_id,
              client_secret=credential.client_secret,
          )
  
          return Session(oauth2credential=oauth2credential)
  
      message = '{} Grant Type does not support Refresh Tokens.'
      message = message.format(credential.grant_type)
      raise UberIllegalState(message)
docs: Use a refresh token to request a new access token.
  
      Not suported for access tokens obtained via Implicit Grant.
  
      Parameters
          credential (OAuth2Credential)
              An authorized user's OAuth 2.0 credentials.
  
      Returns
          (Session)
              A new Session object with refreshed OAuth 2.0 credentials.
  
      Raises
          UberIllegalState (APIError)
              Raised if OAuth 2.0 grant type does not support
              refresh tokens.