刷新响应后调试Sonos错误

时间:2018-12-15 21:20:45

标签: sonos

我构建的Sonos音乐API(SMAPI)实现工作正常。我可以选择播放列表/专辑,并使用customd.html播放曲目。但是几分钟后,Sonos应用程序失败并告诉我“试用期已过”(Sonos的Client.LoginUnauthorized错误消息)。

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

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播放器。刷新的acces令牌发送到以(WDCR:Microsoft Windows NT 10.0.17134)结尾的用户代理。大概是我的台式机Sonos应用程序?。

两个不同的用户代理调用该服务是否正常?如果是,如何处理过期的授权令牌?是否应该延迟过期时间?如果是这样,这个延迟应该持续多久?

编辑: 我的流程是:

  1. 控制器通过令牌发送请求。
  2. 我的授权服务器说它已经过期,撤销令牌A,然后发回新令牌B。
  3. 控制器发送带有令牌B的请求,一切正常!
  4. 接下来发生的事情:播放器发送了一个带有令牌A的请求,该请求已被撤销,因此我们被迫发回未经授权的令牌错误。
  5. 该过程陷入困境,因为玩家不断请求令牌A。错误!我们无法刷新已撤销的令牌!

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

1 个答案:

答案 0 :(得分:0)

玩家执行自己的令牌刷新流程。只要您正确地处理了刷新流程,一切都会顺利进行。如果您发现令牌已过期,则无论客户端如何,都只需刷新令牌即可。

顺便说一句,如果玩家确实获得了刷新令牌,它将把它传递给控制器​​。相反(您注意到了)。