【发布时间】:2020-08-12 22:05:00
【问题描述】:
我们已经在customsd page 上注册了我们的服务,我们可以从Add Music Services 菜单选项中选择它。但是,我们在授权过程中遇到了一些困难。
当我们开始登录过程时,Sonos 向我们的服务发出getAppLink 请求,我们做出响应,按钮成功将用户带到我们的登录页面。那件作品似乎正在发挥作用。
但是,Sonos 正在进行的getDeviceAuthToken 轮询存在问题。登录过程开始后,Sonos 会持续发送三个 getDeviceAuthToken 请求,然后放弃,即使我们返回了必要的重试响应,也不再发送请求。
来自 Sonos 的请求如下所示(部分或全部编辑了一些信息,并在正文中添加了格式以提高可读性):
POST <our_soap_endpoint> HTTP/1.1
Connection: Keep-Alive
Content-Type: text/xml; charset="utf-8"
Accept-Encoding: gzip
Accept-Language: en-US
Host: <our_site>
Max-Forwards: 10
User-Agent: Linux UPnP/1.0 Sonos/51.1-67300 (ICRU_iPhone11,8)
X-Sonos-Controller-ID: 02A4****
X-Sonos-Api-Key: 4348****
X-Sonos-Corr-Id: 0b99****
SOAPACTION: "http://www.sonos.com/Services/1.1#getDeviceAuthToken"
X-FORWARDED-PROTO: https
X-FORWARDED-PORT: 443
X-ORIGINAL-HOST: <our_site>
X-Original-URL: <our_soap_endpoint>
X-Forwarded-For: <some_ip_address>
X-ARR-SSL: 2048|256|C=US, O=DigiCert Inc, CN=DigiCert SHA2 Secure Server CA|C=US, S=Ohio, L=Cleveland, O="OverDrive, Inc.", OU=OverDrive IT, CN=*.overdrive.com
X-ARR-LOG-ID: 5188****
Content-Length: 548
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<credentials xmlns="http://www.sonos.com/Services/1.1">
<deviceId>78****</deviceId>
<deviceProvider>Sonos</deviceProvider>
</credentials>
<context xmlns="http://www.sonos.com/Services/1.1">
<timeZone>-4:00</timeZone>
</context>
</s:Header>
<s:Body>
<getDeviceAuthToken xmlns="http://www.sonos.com/Services/1.1">
<householdId>Sonos_sIGu****</householdId>
<linkCode>ab76****</linkCode>
</getDeviceAuthToken>
</s:Body>
</s:Envelope>
我们的回复看起来像这样(再次部分或全部编辑了一些信息,并在正文中添加了格式以提高可读性):
HTTP/1.1 500 Internal Server Error
Transfer-Encoding: chunked
Content-Type: text/xml; charset="utf-8"
Server: Microsoft-IIS/10.0
Date: Fri, 30 Aug 2019 13:25:25 GMT
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode>Client.NOT_LINKED_RETRY</faultcode>
<faultstring>No token found for link code ab76****. Please retry.</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
根据getDeviceAuthToken 和error handling / faults 的文档我们可以看出,我们的回复似乎与告诉Sonos 重试的预期相符。我们是否遗漏了什么或做错了什么?
【问题讨论】:
标签: sonos