@@ -41,6 +41,7 @@ def __init__(
41
41
client = None ,
42
42
auto_refresh_url = None ,
43
43
auto_refresh_kwargs = None ,
44
+ auto_refresh_type = "refresh_token" ,
44
45
scope = None ,
45
46
redirect_uri = None ,
46
47
token = None ,
@@ -67,6 +68,8 @@ def __init__(
67
68
your access tokens.
68
69
:auto_refresh_kwargs: Extra arguments to pass to the refresh token
69
70
endpoint.
71
+ :auto_refresh_type: Type of auto refresh method to use. Must be either
72
+ "refresh_token" (default) or "access_token".
70
73
:token_updater: Method with one argument, token, to be used to update
71
74
your token database on automatic token refresh. If not
72
75
set a TokenUpdated warning will be raised when a token
@@ -83,6 +86,7 @@ def __init__(
83
86
self ._state = state
84
87
self .auto_refresh_url = auto_refresh_url
85
88
self .auto_refresh_kwargs = auto_refresh_kwargs or {}
89
+ self .auto_refresh_type = auto_refresh_type
86
90
self .token_updater = token_updater
87
91
88
92
# Ensure that requests doesn't do any automatic auth. See #278.
@@ -499,9 +503,18 @@ def request(
499
503
client_id ,
500
504
)
501
505
auth = requests .auth .HTTPBasicAuth (client_id , client_secret )
502
- token = self .refresh_token (
503
- self .auto_refresh_url , auth = auth , ** kwargs
504
- )
506
+ if self .auto_refresh_type == "refresh_token" :
507
+ token = self .refresh_token (
508
+ self .auto_refresh_url , auth = auth , ** kwargs
509
+ )
510
+ elif self .auto_refresh_type == "access_token" :
511
+ token = self .fetch_token (
512
+ self .auto_refresh_url ,
513
+ auth = auth ,
514
+ ** dict (kwargs , ** self .auto_refresh_kwargs ),
515
+ )
516
+ else :
517
+ raise RuntimeError ("Unknown auto_refresh_type: %s" % self .auto_refresh_type )
505
518
if self .token_updater :
506
519
log .debug (
507
520
"Updating token to %s using %s." , token , self .token_updater
0 commit comments