Swift调用MusicCatalogSearchRequest抛出.developerTokenRequestFailed错误求助
排查MusicKit .developerTokenRequestFailed错误的思路
问题重现
调用MusicCatalogSearchRequest时抛出.developerTokenRequestFailed错误,相关代码如下:
Task { let status = await MusicAuthorization.request() if status != .authorized { return } do { let req = MusicCatalogSearchRequest(term: "weeknd", types: [Album.self, Song.self]) let res = try await req.response() print("Res:", res) } catch { let nsError = error as NSError print(error) print("Error Description:", nsError.localizedDescription) } }
核心排查步骤
确认开发者Token配置
音乐目录(MusicCatalog)的访问必须依赖有效的开发者Token,这是最常见的遗漏点:- 登录Apple Developer后台,生成符合要求的开发者Token:使用ES256算法签名,audience设为
https://music.apple.com,有效期不超过180天。 - 在代码中主动设置Token:
do { try MusicAuthorization.setDeveloperToken("你的有效开发者Token") } catch { print("设置开发者Token失败:", error) } - 生产环境禁止硬编码Token,建议通过后端接口动态获取,避免泄露。
- 登录Apple Developer后台,生成符合要求的开发者Token:使用ES256算法签名,audience设为
检查App ID与权限配置
- 登录Apple Developer后台,确保目标App ID已开启Apple Music服务。
- 确认测试使用的Provisioning Profile包含该App ID,且已正确安装到测试设备/模拟器。
验证用户与环境
- 测试设备/模拟器需登录有效的Apple ID,且该ID已开通Apple Music服务(试用版也可)。
- 确保设备网络正常,能访问Apple Music官方服务,无代理或防火墙拦截。
增强错误日志排查
修改错误捕获逻辑,获取更详细的底层错误信息:catch let musicError as MusicKit.Error { switch musicError { case .developerTokenRequestFailed(let underlyingError): print("开发者Token请求失败,底层错误:", underlyingError ?? "无额外信息") case .unauthorized(let message): print("授权失败:", message ?? "无描述") default: print("其他MusicKit错误:", musicError) } } catch { print("通用错误:", error.localizedDescription) }
关键提示
用户授权(MusicAuthorization.request())仅用于访问用户个人的音乐库数据,音乐目录的搜索/访问必须单独配置开发者Token,这是很多开发者容易混淆的点。
内容的提问来源于stack exchange,提问作者reidemption
相关产品推荐
相关产品推荐

