0

我是 authlib 的新手,在查看文档时提到它支持passwordgrant_type 的“自动刷新”。

我想知道库是否能够在使用时检测到当前关联的令牌何时过期,client_credentials然后为我请求一个新的访问令牌。(为我做整个 OAuth 舞蹈)

检查我需要做的每一个电话,我是否得到了 401,然后触发获取新令牌的动作,这似乎很难看。

这里有最佳实践吗?可以以某种方式将其添加为装饰器吗?

4

2 回答 2

2

为了给前面的答案增添一些风味,我能够让 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)
于 2020-05-30T20:53:29.150 回答
0

它会自动刷新你的令牌,下面是代码:

https://github.com/lepture/authlib/blob/master/authlib/integrations/requests_client/oauth2_session.py#L25-L30

于 2020-02-28T06:51:17.303 回答