如何使用Rauth python库刷新令牌?

如何使用Rauth python库刷新令牌?,python,oauth,rauth,Python,Oauth,Rauth,我对Oauth不是很了解,所以需要一些帮助来实现我的FreeAgent会计系统的接口,他们提供了Oauth 2 API 我想用标准Python编写代码,似乎最好的库是Rauth。 我的问题是刷新代币 关于如何使用python Rauth库刷新过期的令牌,有什么好的示例吗? 那么,处理过期的最佳实践是什么? 我可以尝试使用我的令牌,如果由于到期而出现错误,请刷新。 或者我可以记录一个代币的寿命,如果我的计算结果显示它过期了,那么我可以再要一个。 在哪里保存这些令牌信息最好:在配置文件中,在JSON

我对Oauth不是很了解,所以需要一些帮助来实现我的FreeAgent会计系统的接口,他们提供了Oauth 2 API

我想用标准Python编写代码,似乎最好的库是Rauth。 我的问题是刷新代币

关于如何使用python Rauth库刷新过期的令牌,有什么好的示例吗? 那么,处理过期的最佳实践是什么? 我可以尝试使用我的令牌,如果由于到期而出现错误,请刷新。 或者我可以记录一个代币的寿命,如果我的计算结果显示它过期了,那么我可以再要一个。 在哪里保存这些令牌信息最好:在配置文件中,在JSON对象中,保存到数据库中

谢谢你的帮助

格雷格

或者我可以记录一个代币的寿命,如果我的计算结果显示它过期了,那么我可以再要一个

这是我的建议。将当前令牌的有效期保留在某个位置,在发出请求之前,请检查该令牌是否已过期。如果有,请将刷新令牌与访问令牌方法一起使用,以检索新的访问令牌。
refresh\u-token
方法可能如下所示:

def refresh_token():
    if not expired():
        return

    # OAuth 2.0 example
    data = {'client_id':client_id,
            'client_secret': client_secret,
            'grant_type': 'refresh_token',
            'refresh_token': refresh_token}

    return service.get_access_token(data=data)
由于具体的流程可能会因供应商而异,因此rauth没有对其进行记录。然而,也许我们应该在文档中记录这种一般模式


希望有帮助

谢谢,麦克斯,我要试试你的建议。如果我没有错的话,你是劳思的作者,谢谢你的支持。是的,我是作者。如果您还有其他问题,请告诉我。不,Max,它不起作用。我这样做:
service=rauth.OAuth2Service(…)data={.as you signed…}返回service.get\u access\u token(data=data)
但我遇到了以下错误:`keyrerror:'解码器无法处理带有提供者返回的数据的access\u token。可能需要不同的解码器。提供程序返回:{“访问令牌”:“XXXXXXXXXXXXX”,“令牌类型”:“承载者”,“到期日”:604800}。问题是服务使用的标准解码器。如果我使用自定义解码器将字符串解析为字典,那么一切都可以正常工作:
def str2dict(x):import ast return ast.literal\u eval(x)def refresh\u token()。。。f=str2dict返回服务。获取\u访问\u令牌(data=data,decoder=f)
现已修复。很抱歉,代码全部压缩。。如何在StackOverflow注释中插入新行或代码段?