Python 3.x 在客户端凭据流中请求oauthlib自动刷新承载令牌?

Python 3.x 在客户端凭据流中请求oauthlib自动刷新承载令牌?,python-3.x,microsoft-graph-api,Python 3.x,Microsoft Graph Api,我正在使用python请求oauthlib包连接到Microsoft Graph。我正在使用OAuth 2.0客户端凭据流 下面的简化代码工作得非常好: 从oauthlib.oauth2导入后端应用程序客户端 从请求导入OAuth2Session 客户端=后端应用程序客户端(客户端\u id='myclientid') 令牌\u url=”https://login.microsoftonline.com/mydomain.onmicrosoft.com/oauth2/v2.0/token" m

我正在使用python请求oauthlib包连接到Microsoft Graph。我正在使用OAuth 2.0客户端凭据流

下面的简化代码工作得非常好:

从oauthlib.oauth2导入后端应用程序客户端
从请求导入OAuth2Session
客户端=后端应用程序客户端(客户端\u id='myclientid')
令牌\u url=”https://login.microsoftonline.com/mydomain.onmicrosoft.com/oauth2/v2.0/token"
msgraph=OAuth2Session(客户端=客户端)
msgraph.fetch_令牌(
token\u url=token\u url,
client_secret='myclientsecret',
范围=https://graph.microsoft.com/.default')
response=msgraph.get(
url=”https://graph.microsoft.com/v1.0/users/user@mydomain.com/messages)
在这种情况下,承载访问令牌仅在1小时内有效。requests oauthlib包具有不同的刷新令牌,但似乎仅限于单独的刷新令牌。与Microsoft Graph一起使用的客户端凭据流仅发出访问令牌

因此,我的问题是:

  • 在这个用例中,有没有办法让oauthlib请求自动刷新令牌,或者我需要手动跟踪令牌的年龄,并根据需要显式刷新它
  • 我不喜欢oauthlib,所以如果有更好的库实现自动刷新,我会对使用它感兴趣

  • 这种行为是设计的(并与OAuth规范保持一致)。唯一支持刷新令牌的OAuth授权是和。和只返回一个访问令牌


    更重要的是,由于客户端凭据流不是交互式的,因此不需要刷新令牌。您只需在旧令牌过期时请求新令牌

    据我所知,仍然没有使用oauthlib请求自动执行此操作的内置方法。他们的GitHub上有一张关于它的票,上面有一些关于如何做的不同想法,但是没有现成的东西:

    完全理解……我很好奇是否有库支持来处理跟踪令牌过期并请求新令牌的细节……或者我是否必须自己处理这些。实际上有成千上万的OAuth库。就我个人而言,我只是自己处理。