微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Authlib烧瓶-如何处理刷新令牌?

如何解决Python Authlib烧瓶-如何处理刷新令牌?

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

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

但是如何真正使用authlib和flask集成呢?
在FlaskRemoteApp上似乎没有refresh_token(),而且我还找不到任何显示内容的示例代码

这似乎可以用来获取新令牌

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给出 the 答案,否则我至少有一个答案。
我只是错过了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,并且仅在必要时访问身份验证服务器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?