我是 authlib 的新手,在查看文档时提到它支持password
grant_type 的“自动刷新”。
我想知道库是否能够在使用时检测到当前关联的令牌何时过期,client_credentials
然后为我请求一个新的访问令牌。(为我做整个 OAuth 舞蹈)
检查我需要做的每一个电话,我是否得到了 401,然后触发获取新令牌的动作,这似乎很难看。
这里有最佳实践吗?可以以某种方式将其添加为装饰器吗?
我是 authlib 的新手,在查看文档时提到它支持password
grant_type 的“自动刷新”。
我想知道库是否能够在使用时检测到当前关联的令牌何时过期,client_credentials
然后为我请求一个新的访问令牌。(为我做整个 OAuth 舞蹈)
检查我需要做的每一个电话,我是否得到了 401,然后触发获取新令牌的动作,这似乎很难看。
这里有最佳实践吗?可以以某种方式将其添加为装饰器吗?
为了给前面的答案增添一些风味,我能够让 refresh_token 函数为最近的 API 集成工作。
这有一些特殊性,因为我必须在 refresh_token 调用中传递 client_id 和 client_secret。我还必须设置grant_type。这些可能不适用于您尝试使用的 API。
from authlib.integrations.requests_client import OAuth2Session
my_token = {'refresh_token':current_refresh_token,
'access_token': current_access_token,
'expires_at': current_access_token_expires_at,
'expires_in': current_access_token_expires_in}
oauth_session = OAuth2Session(CLIENT_ID,CLIENT_SECRET,
authorization_endpoint=AUTH_ENDPOINT,
token_endpoint=TOKEN_ENDPOINT,
token=my_token,
grant_type='refresh_token')
new_token = oauth_session.refresh_token(
url=REFRESH_TOKEN_URL,
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET)
它会自动刷新你的令牌,下面是代码: