You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wyze Python SDK中refresh_token()函数正确使用方法咨询

解决Wyze SDK使用存储的refresh_token刷新access_token的问题

你遇到的错误根源是:初始化Client时只传入了过期的access_token,没有同时传入存储的refresh_token,导致SDK实例未持有刷新所需的凭证,调用refresh_token()时会判定为未登录状态。

正确操作步骤

  1. 初始化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"]
    )
    
  2. 调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:22:15