Wyze Python SDK中refresh_token()函数正确使用方法咨询
解决Wyze SDK使用存储的refresh_token刷新access_token的问题
你遇到的错误根源是:初始化Client时只传入了过期的access_token,没有同时传入存储的refresh_token,导致SDK实例未持有刷新所需的凭证,调用refresh_token()时会判定为未登录状态。
正确操作步骤
初始化Client时同时传入两个token
不要只传过期的access_token,要把文件里存储的access_token和refresh_token一起传给Client构造函数。Wyze SDK的Client设计是通过实例属性管理认证凭证的,refresh_token()方法会直接使用实例内的refresh_token请求新的access_token。示例代码:
from wyze_sdk import Client import json # 从文件读取存储的token with open("wyze_tokens.json", "r") as f: tokens = json.load(f) # 同时传入两个token初始化Client client = Client( access_token=tokens["access_token"], refresh_token=tokens["refresh_token"] )调用refresh_token()并更新存储的token
现在调用refresh_token()即可正常执行,成功后SDK会自动更新Client实例内的access_token和refresh_token属性,记得把新的token重新保存到文件:try: client.refresh_token() # 保存新的token到文件 new_tokens = { "access_token": client.access_token, "refresh_token": client.refresh_token } with open("wyze_tokens.json", "w") as f: json.dump(new_tokens, f) # 后续正常调用API devices = client.devices.list() print(devices) except Exception as e: print(f"刷新失败: {e}") # 若刷新失败(比如refresh_token也过期),再触发重新登录逻辑
为什么refresh_token()不支持传参?
这是SDK的设计选择,遵循OAuth2认证流程的常见实现:让Client实例自行管理认证状态(包括两个token),既简化了接口调用,也避免了每次操作都手动传参的繁琐。所有需要认证的API调用都会依赖实例内的凭证,刷新操作也不例外。
额外提示
- 每次刷新成功后必须保存新的
refresh_token(Wyze SDK刷新时会返回新的refresh_token),下次初始化要使用最新的凭证。 - 如果refresh_token本身已过期,只能重新登录,这是OAuth2的安全机制,无法绕过。
内容的提问来源于stack exchange,提问作者Aran Bins
相关产品推荐
相关产品推荐

