requests-oauthlib
requests-oauthlib copied to clipboard
`OAuth2Session`: Provide a default `token_updater` that just replaces `self.token`
To make the auto-refresh procedure work with our oauth2 server I discovered that I had to create the token_updater function myself, and that it was this very simple one-liner:
oauth_session = OAuth2Session(client=my_oauth_client, # the client knows the scope already
auto_refresh_url=refresh_token_url,
auto_refresh_kwargs={'client_id': client_id,
'target': client_id,
'api_type': refresh_api_type},
# Until PR is accepted the scope need to be repeated
scope=scopes # https://github.com/requests/requests-oauthlib/pull/409
)
# HERE: could we get rid of this code by default ?
# the update procedure that will be called on successful token refresh
def token_updater(new_token):
oauth_session.token = new_token
oauth_session.token_updater = token_updater
Am I right to think that the last three lines of code could be done automatically by default ?
If so I can propose a PR
I think a default updater would be beneficial. I think you'll also need to set access_token. Maybe something like this within the OAuth2Session class:
def token_updater(self, token):
self.token = token
self.access_token = token['access_token']
I think the issue is that client updates only happen if there is a token updater set (see https://github.com/requests/requests-oauthlib/blob/master/requests_oauthlib/oauth2_session.py#L537). If we move the self._client.add_token call outside of the if check, defining a default token_updater won't be necessary