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

Node.js调用MusicKit API遭遇401未授权错误求助

排查MusicKit API 401未授权错误的解决方案

我来帮你一步步拆解这个401问题,结合你的代码和请求日志,咱们先梳理几个核心排查方向:

1. 先排除JWT Header中typ字段的疑虑

你提到Apple文档没指定typ字段,这点确实没错——MusicKit的Developer Token要求Header里只需要alg和kid,不过JWT库默认加上typ: JWT是通用行为,这个字段不会导致401错误,可以先排除这个因素。

2. 重点检查Token签名的正确性

这是401最常见的诱因,你需要逐一验证:

  • 确认AuthKey.p8文件有效性:确保你是从Apple Developer后台的「Media Services > MusicKit」栏目下载的私钥,文件内容没有多余的空格、换行或格式错误(比如开头的-----BEGIN PRIVATE KEY-----和结尾的-----END PRIVATE KEY-----必须完整)。
  • 核对teamId和keyId:
    • teamId是开发者账号中10位的Team ID(在「Membership」页面查看),必须和options.issuer完全一致;
    • keyId是生成MusicKit密钥时系统分配的ID(在「Keys」页面查看),大小写、字符必须完全匹配options.header.kid。
  • 验证签名过程:你的代码中jwt.sign({}, privateKey, options)是正确的(Developer Token不需要自定义payload字段),但要确保使用的JWT库支持ES256算法(比如jsonwebtoken库需配合jwa依赖,不过你已经生成了token,大概率库是兼容的,可以重新测试签名流程)。

3. 检查Token的传输完整性

你的curl请求中Authorization: Bearer <MYTOKEN>必须满足:

  • Token是完整的单行字符串,没有被截断、换行或添加多余字符;
  • 确保token的Base64编码是URL-safe的(即+替换为-,/替换为_,去掉末尾的=)——有些库可能生成非URL-safe的编码,会导致Apple服务器无法解析。

4. 确认账号权限与API端点

  • 检查你的开发者账号是否开通MusicKit API权限:在Apple Developer后台的「App IDs」中,确保对应的App ID启用了「MusicKit」服务;
  • 你请求的/v1/catalog/us/artists/36954是公共Catalog端点,只需要Developer Token即可访问,不需要用户授权,权限层面应该没问题,但可以尝试换一个公共端点测试(比如/v1/catalog/us/songs/1440822142)。

5. 其他排查小技巧

  • 重新生成一个有效期在当前时间内的token(你的测试token有效期到2019年11月,当时测试时在有效期内,但现在测试必须生成新token);
  • 用curl的--http1.1参数强制使用HTTP/1.1请求,排除HTTP/2兼容性问题:
    curl -v --http1.1 -H 'Authorization: Bearer <YOUR_NEW_TOKEN>' "https://api.music.apple.com/v1/catalog/us/artists/36954"
    
  • 检查网络环境:是否有代理、防火墙或VPN修改了请求头?尝试在干净的网络环境下测试。

总结

最可能的问题是私钥文件错误、teamId/keyId不匹配,或者token在传输时被截断,建议优先从这几个方向排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:45:22