首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新响应后调试Sonos错误

刷新响应后调试Sonos错误
EN

Stack Overflow用户
提问于 2018-12-15 21:20:44
回答 1查看 137关注 0票数 0

我构建的Sonos (SMAPI)实现运行良好。我可以选择播放列表/专辑和播放歌曲使用customsd.html。但是几分钟后,Sonos应用程序就失败了,并告诉我“试用期过期了”(Sonos的Client.LoginUnauthorized错误消息)。

我保存一个错误日志,跟踪服务器上的所有Sonos请求。在它中,您可以看到在21:39:54发送了一个刷新令牌(Client.TokenRefreshRequired),随后的请求使用这个身份验证令牌来授权getLastUpdate请求。下一个请求失败,因为它使用无效的授权令牌。

代码语言:javascript
复制
2018-12-15 21:39:19.680877:  server gets request: getMediaURI
2018-12-15 21:39:19.681059:  user agent: ["Linux UPnP\/1.0 Sonos\/47.2-59120 (ZP90)"]
2018-12-15 21:39:19.767269:  AUTHORIZE REQUEST starting with token: 26052eec7baed95cf51bb497acb74445e7f3f86c
2018-12-15 21:39:20.022666:  Successfully ended getMediaURI

2018-12-15 21:39:54.861666:  server gets request: getLastUpdate
2018-12-15 21:39:54.861842:  user agent: ["Linux UPnP\/1.0 Sonos\/47.2-59120 (WDCR:Microsoft Windows NT 10.0.17134)"]
2018-12-15 21:39:54.953047:  AUTHORIZE REQUEST starting: with token: 26052eec7baed95cf51bb497acb74445e7f3f86c
2018-12-15 21:39:55.177064:  Sending refreshed access token. token 93467644b3c00ec738a06f41abb44f5925977da6

2018-12-15 21:39:55.997627:  server gets request: getLastUpdate
2018-12-15 21:39:55.998382:  user agent: ["Linux UPnP\/1.0 Sonos\/47.2-59120 (WDCR:Microsoft Windows NT 10.0.17134)"]
2018-12-15 21:39:56.111795:  AUTHORIZE REQUEST starting with token: 93467644b3c00ec738a06f41abb44f5925977da6
2018-12-15 21:39:56.338871:  Successfully ended getLastUpdate

2018-12-15 21:40:10.834301:  server gets request: getMediaURI
2018-12-15 21:40:10.834675:  user agent: Linux UPnP\/1.0 Sonos\/47.2-59120 (ZP90)
2018-12-15 21:40:10.928440:  AUTHORIZE REQUEST starting with token: 26052eec7baed95cf51bb497acb74445e7f3f86c
2018-12-15 21:40:10.940039:  FAILED AUTHENTICATION

身份验证在21:40:10调用时失败。此调用由以(ZP90)结尾的用户代理进行,我认为它是我的物理Sonos播放器。刷新的访问令牌发送给以(WDCR:MicrosoftWindowsNT10.0.17134)结尾的用户代理;想必是我的桌面Sonos应用程序?

两个不同的用户代理调用服务是正常的吗?如果是,如何处理过期的授权令牌?它们是否应该延迟到期呢?如果是的话,这个延迟应该是多长时间?

编辑:我的流程是:

  1. 控制器用令牌A发送请求。
  2. 我的授权服务器说它已经过期了,撤销令牌A并发回新的令牌B。
  3. 控制器发送带有令牌B的请求,一切正常!
  4. 接下来发生的事情是:玩家发送一个带有令牌A的请求,该请求已经被撤销,所以我们被迫返回一个未经授权的令牌错误。
  5. 这个过程被卡住了,因为玩家一直在请求令牌A.错误!我们不能刷新已撤销的令牌!

如何继续使用已撤销的授权令牌?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-17 14:48:44

播放机执行自己的令牌刷新流。只要您正确地处理您的端部的刷新流,事情就会解决。如果您注意到一个过期的令牌,只需刷新它,而不管客户端。

另外,如果玩家确实获得了刷新令牌,它将把它传递给控制器。相反的事情并没有发生(正如你注意到的那样)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53797360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档