我构建的Sonos (SMAPI)实现运行良好。我可以选择播放列表/专辑和播放歌曲使用customsd.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播放器。刷新的访问令牌发送给以(WDCR:MicrosoftWindowsNT10.0.17134)结尾的用户代理;想必是我的桌面Sonos应用程序?
两个不同的用户代理调用服务是正常的吗?如果是,如何处理过期的授权令牌?它们是否应该延迟到期呢?如果是的话,这个延迟应该是多长时间?
编辑:我的流程是:
如何继续使用已撤销的授权令牌?
发布于 2018-12-17 14:48:44
播放机执行自己的令牌刷新流。只要您正确地处理您的端部的刷新流,事情就会解决。如果您注意到一个过期的令牌,只需刷新它,而不管客户端。
另外,如果玩家确实获得了刷新令牌,它将把它传递给控制器。相反的事情并没有发生(正如你注意到的那样)。
https://stackoverflow.com/questions/53797360
复制相似问题