You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spotify API无法创建私有播放列表问题排查求助

排查Spotify播放列表创建始终为公开的问题

我之前也踩过类似的坑,结合你的代码和权限配置,给你几个具体的排查方向:

1. 显式指定布尔值包装类

你代码里写的params.put("public", false)虽然会自动装箱,但部分API wrapper在序列化Object类型参数时,可能对基本类型布尔值的处理存在异常(比如误转成字符串"false",而Spotify API会忽略非布尔类型的public参数, fallback到默认的true)。试试显式使用包装类:

params.put("public", Boolean.FALSE);

这样能确保序列化时参数被正确识别为布尔类型。

2. 抓包验证实际发送的请求体

建议用抓包工具(比如Charles、Fiddler)查看应用发送给Spotify API的POST请求体,确认public: false是否真的被包含在内。如果请求体里没有这个参数,说明问题出在kaaes的wrapper对参数的处理上——你可以尝试绕过wrapper,直接用OkHttp构造请求测试:

// 用OkHttp直接发送请求示例
OkHttpClient client = new OkHttpClient();
MediaType JSON = MediaType.get("application/json; charset=utf-8");
String requestBodyJson = "{\"name\":\"" + mPlaylistTitle + "\",\"public\":false,\"collaborative\":false,\"description\":\"" + mPlaylistDescription + "\"}";
RequestBody body = RequestBody.create(requestBodyJson, JSON);
Request request = new Request.Builder()
  .url("https://api.spotify.com/v1/users/" + user + "/playlists")
  .post(body)
  .addHeader("Authorization", "Bearer " + yourAccessToken)
  .build();

Response response = client.newCall(request).execute();

如果直接发送请求能创建私有播放列表,那就是wrapper的问题;如果还是不行,继续往下排查。

3. 确认权限的实际生效状态

虽然你申请了playlist-modify-private权限,但要确认:

  • 用户在授权流程中确实同意了该权限(可以登录Spotify账号,在「应用权限管理」页面查看你的应用是否拥有该权限)
  • 测试账号的类型:虽然现在免费账号也支持私有播放列表,但部分早期免费账号可能存在限制,建议用Premium账号测试排除这个可能。

4. 检查返回结果的实际状态

有时候可能是客户端显示的问题,实际播放列表已经是私有状态。你可以打印返回的Playlist对象的public字段值,确认API返回的状态是否符合预期。


内容的提问来源于stack exchange,提问作者Hauke Sommerfeld

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:20:41