我对Oauth不是很在行,所以需要一些帮助来实现我的FreeAgent会计系统的接口,他们提供了Oauth 2 API。
我想用标准的Python编写代码,最好的库似乎是Rauth。
我的问题是更新代币。
关于如何使用python Rauth库刷新过期的令牌,有什么好的示例吗?
那么处理过期的最佳实践是什么?
我可以尝试使用我的令牌,如果由于过期而出现错误,请请求刷新。
或者我可以跟踪一个代币的生命周期,如果我的计算结果显示它已经过期了,那就要求另一个代币。
最好保存这些令牌信息:在配置文件中,在JSON对象中,在数据库中。。。?
谢谢你的帮助。
格雷格

最佳答案

或者我可以跟踪一个代币的生命周期,如果我的计算结果显示它已经过期了,那就要求另一个代币。
这是我推荐的。将当前令牌的到期时间保留在某个地方,在发出请求之前,请检查令牌是否已过期。如果有,请将刷新令牌与访问令牌方法一起使用,以检索新的访问令牌。refresh_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没有对此进行记录。不过,也许我们应该在文档中记录下这种通用模式。
希望能有帮助!

10-08 18:11