我构建的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应用程序?。
两个不同的用户代理调用该服务是否正常?如果是,如何处理过期的授权令牌?是否应该延迟过期时间?如果是这样,这个延迟应该持续多久?
编辑: 我的流程是:
如何继续使用已撤销的授权令牌?
答案 0 :(得分:0)
玩家执行自己的令牌刷新流程。只要您正确地处理了刷新流程,一切都会顺利进行。如果您发现令牌已过期,则无论客户端如何,都只需刷新令牌即可。
顺便说一句,如果玩家确实获得了刷新令牌,它将把它传递给控制器。相反(您注意到了)。