Spotify开发者API教程中Illegal redirect_uri错误排查求助
解决Spotify API的Illegal redirect_uri错误(已核对URI仍报错)
我之前踩过一模一样的坑!明明代码里的redirect_uri和Spotify开发者后台My Applications里的设置看起来完全一致,结果还是弹出Illegal redirect_uri的错误,给你几个实用的排查方向:
- 检查大小写和末尾斜杠:Spotify对redirect_uri的验证是完全严格匹配的,哪怕是一个字母大小写不同,或者末尾多了/少了/,都会判定不匹配。比如
http://localhost:8888/callback和http://localhost:8888/Callback、http://localhost:8888/callback/都是不同的URI,逐字符对比一遍。 - 本地地址的格式一致性:如果你用本地测试,确保代码里的URI和后台设置的是同一种格式——要么全用
http://localhost:8888/callback,要么全用http://127.0.0.1:8888/callback,这两个地址虽然指向同一台机器,但Spotify会视为不同的redirect_uri。 - 确认代码里的变量真的正确赋值:看你贴的代码片段里
client_id = id;,先确认这个id是你的实际客户端ID,同理检查redirect_uri的变量有没有写错。可以在代码里加一行console.log(redirect_uri);,启动服务后看控制台输出的URI和后台设置的是不是完全一致——有时候会不小心在拼接时多加了空格或者特殊字符,肉眼很难发现。 - 等待后台设置生效:修改Spotify后台的redirect_uri后,偶尔会有几分钟的延迟才会生效。试试退出开发者后台重新登录,确认设置的URI已经保存,然后重启你的Express服务再测试。
- 检查授权请求的实际参数:用浏览器的开发者工具(Network面板)查看/login路由跳转的请求URL,看看其中的
redirect_uri参数值是不是和你预期的一致,有时候代码里的变量引用错误会导致实际发送的URI不对。
另外,给你贴一段标准的Express授权路由示例,你可以对照检查自己的代码:
var express = require('express'); var request = require('request'); var querystring = require('querystring'); var cookieParser = require('cookie-parser'); var client_id = '你的实际客户端ID'; // 替换成你的ID var client_secret = '你的实际客户端密钥'; // 替换成你的密钥 var redirect_uri = 'http://localhost:8888/callback'; // 必须和后台完全一致 var app = express(); app.use(express.static(__dirname + '/public')) .use(cookieParser()); app.get('/login', function(req, res) { var scope = 'user-read-private user-read-email'; res.redirect('https://accounts.spotify.com/authorize?' + querystring.stringify({ response_type: 'code', client_id: client_id, scope: scope, redirect_uri: redirect_uri, // 确保这里用的是上面定义的变量 state: 'random-string-for-security' })); }); // 其他路由和逻辑... app.listen(8888); console.log('Listening on 8888');
内容的提问来源于stack exchange,提问作者nmowery
相关产品推荐
相关产品推荐

