Python authlib Flask - 如何处理刷新令牌?

2024-01-10

到目前为止,我只需要 oauth2 进行登录,但我觉得为了相当完整,我的应用程序仍然应该处理刷新令牌。

我对 oauth 还很陌生,所以这是我的理解:
通过保持访问令牌生命周期较短,但刷新令牌生命周期较长,您可以强制客户端定期“签入”以更新访问令牌,从而保持更多控制。

但是如何使用 authlib 和 Flask 集成来实际做到这一点呢?
FlaskRemoteApp 上似乎没有刷新令牌(),并且我找不到任何显示此内容的示例代码。

这似乎可以获取新令牌

res = oauth.myOauth2.fetch_access_token(refresh_token=session['tok_res']['refresh_token'])
session['tok_res'].update(res)

但随后使用新的 access_token 进行 api 调用时失败。
我想可能是服务器错误,或者我可能需要等待旧令牌过期才能使用新令牌? expires_at 时间不断更新,在这种情况下这对我来说毫无意义。

如果有人能解释如何将refresh_token与authlib和flask一起使用,那就太好了。


好吧,除非@lepture https://stackoverflow.com/users/389412/lepture顺便过来the回答,我至少有an answer.
我只是失踪了grant_type='refresh_token'从我的电话中。
所以现在这对我来说正如预期的那样。

if session['oatoken']['expires_at'] - 2 < now:  # refresh 2 seconds early
    oatoken = oauth.myOauth2.fetch_access_token(
        refresh_token=session['oatoken']['refresh_token'],
        grant_type='refresh_token')
    session['oatoken'].update(oatoken)

我在注册表中设置了 update_token 函数,但无法使其工作。无论如何,我相信只有当使用令牌的 api 调用收到“过期令牌”回复时才会触发此操作。就我而言,我仅使用 Oauth 进行登录,因此我可以只查看 expires_at 时间,并且仅在必要时才访问身份验证服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python authlib Flask - 如何处理刷新令牌? 的相关文章

随机推荐