请求Spotify用户认证返回401:未提供令牌问题求助
问题分析与解决方案
核心错误是授权端点使用错误:你当前重定向到的是api.spotify.com/authorize,但Spotify授权码流程的第一步授权页面端点应该是accounts.spotify.com/authorize。
api.spotify.com是Spotify的资源API端点,所有请求都需要携带有效访问令牌,这就是你收到No token provided 401错误的原因;而accounts.spotify.com才是负责OAuth2授权流程的端点,第一步获取授权码的请求不需要携带token。
修正后的Ktor路由代码
get("/login") { call.respondRedirect { protocol = URLProtocol.HTTPS host = "accounts.spotify.com" // 修正此处的host encodedPath = "/authorize" parameters.apply { append("response_type", "code") append("client_id", Settings.CLIENT_ID) append("redirect_uri", Settings.REDIRECT_URI) } } }
额外检查点
- 确保
Settings.REDIRECT_URI的值与Spotify开发者后台配置的完全一致,包括协议(http/https)、端口、路径,不能有多余的斜杠或大小写差异 - 客户端密钥(Client Secret)不需要在第一步授权请求中传递,只有在后续用授权码交换访问令牌的请求里,才需要通过Basic Auth(将
CLIENT_ID:CLIENT_SECRETBase64编码后放在Authorization头)或者表单参数client_secret传递
内容的提问来源于stack exchange,提问作者Lime
相关产品推荐
相关产品推荐

