Wyze SDK:如何正确使用刷新令牌?

问题描述 投票:0回答:1

我试图了解refresh_token()函数在Wyze python SDK中的工作原理: https://github.com/shauntarves/wyze-sdk/blob/master/wyze_sdk/api/client.py

假设我想访问 Wyze API 以列出我拥有的所有设备。

首先,我的 python 脚本检查我是否在上次登录的文件中存储了 access_token。这将无需再次登录。

如果我存储了一个,那么我只需使用从文件中读取的访问令牌来调用 API:

wyze_access_token = read_access_token_file()
client = Client(token=wyze_access_token)
response = client.devices_list()

如果我没有存储,我使用 Client.login() 登录,然后存储它响应的 access_token 和 refresh_token:

response = Client().login(
    email="...",
    password="...",
    key_id="...",
    api_key="..."
)
write_access_token_file(response["access_token"])
write_refresh_token_file(response["refresh_token"])

在这种情况下,我已经存储了上次登录时存储的 access_token。 但是已经过期了。所以现在我需要使用refresh_token()函数。

我尝试调用 client.refresh_token() 但收到错误消息,提示客户端未登录:

wyze_sdk.errors.WyzeClientConfigurationError:客户端未登录

它这样说是因为它检查是否有一个refresh_token分配给Client对象

..嗯,我没有将其分配给客户端,我将其存储在文件中。只有在执行 Client.login() 后才会分配刷新令牌...

但我不想登录。这需要大量时间,而使用令牌要快得多。

为什么refresh_token()不接受参数以便我可以传递我存储在文件中的refresh_token?我不明白,为什么要重新登录,这完全违背了使用令牌的目的?

我实际上如何处理最初从存储在文件中的登录()响应中获得的refresh_token?

python authentication sdk access-token refresh-token
1个回答
0
投票

如果您查看

refresh_token
的来源,它需要来自 self._refresh_token
刷新令牌
。所以你可以这样做,

refresh_token = read_refresh_token_file()
client = Client(refresh_token=refresh_token)
client.refresh_token()
client.devices_list()
© www.soinside.com 2019 - 2024. All rights reserved.