Sonos createToken API调用返回400 server_error问题求助
排查Sonos createToken API返回400 server_error的常见原因
针对你遇到的问题,结合Sonos OAuth认证机制,整理几个核心排查点:
- 授权码不可重复使用:Sonos的授权码是一次性的,一旦用它调用过createToken接口,再次使用就会返回错误。确认你用的是刚获取的全新授权码。
- Base64编码对象错误:Authorization头里的Base64内容必须是开发者应用的Client ID和Client Secret(用冒号
:拼接),不是你的用户登录账号密码。比如ClientID123:Secret456编码后的值才是正确的。 - 重定向URI完全匹配:确保请求中的
redirect_uri和你在Sonos开发者后台设置的地址完全一致,包括是否带结尾斜杠、域名/IP、端口号。比如后台设的是http://localhost:8080,就不能写成http://localhost:8080/或http://127.0.0.1:8080。 - 请求参数传递方式错误:Sonos的
/login/v3/oauth/access接口要求授权相关参数放在POST请求体中,而非URL的查询参数里。你当前的curl命令把参数放在了URL上,这不符合接口要求。 - 授权码过期:Sonos授权码的有效期通常只有几分钟,获取后需立即调用createToken接口,超时会导致无效。
修正后的Curl命令示例
curl --location --request POST 'https://api.sonos.com/login/v3/oauth/access' \ --header 'Content-Type: application/x-www-form-urlencoded;charset=utf-8' \ --header 'Authorization: Basic {替换为ClientID:ClientSecret的Base64编码值}' \ --data-urlencode 'grant_type=authorization_code' \ --data-urlencode 'code={替换为刚获取的授权码}' \ --data-urlencode 'redirect_uri=http://localhost:8080'
另外检查Authorization头的格式,Basic后面必须有一个空格,不要遗漏。
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

