调用API请求获取用户专辑时user token应放置在request.get的哪个位置
你当前代码中使用的jwtToken是Apple Music开发者令牌,仅用于标识开发者身份,调用/v1/me/开头的个人资源接口时,还需要额外传入音乐用户令牌,该令牌是用户授权你的应用访问Apple Music库后获得的凭证。
令牌放置位置
你需要将用户令牌添加到request.get配置的headers字段中,字段名为Music-User-Token,修改后的代码如下:
"use strict"; const fs = require("fs"); const jwt = require("jsonwebtoken"); const request = require("request"); const privateKey = fs.readFileSync("AuthKey.p8").toString(); // 生成开发者令牌,注意issuer要填你的开发者团队ID,kid填AuthKey对应的密钥ID const jwtToken = jwt.sign({}, privateKey, { algorithm: "ES256", expiresIn: "180d", issuer: "你的团队ID", header: { alg: "ES256", kid: "你的密钥ID" } }); console.log("开发者token:", jwtToken, "\n"); // 此处替换为你实际从客户端获取到的用户授权令牌 const userToken = "用户授权后得到的音乐用户令牌"; const url = "https://api.music.apple.com/v1/me/library/albums"; request.get( { url: url, auth: { bearer: jwtToken }, // 新增headers配置传递用户令牌 headers: { "Music-User-Token": userToken }, json: true }, (err, httpResponse, body) => { if (err) { console.error(err); } else { console.log(body.results.albums.data); } } );
注意事项
- 音乐用户令牌无法在服务端自行生成,需要在苹果端应用内使用
SKCloudServiceController相关API向用户申请授权后获取 - 生成开发者令牌时必须正确填充
issuer(开发者团队ID)和header.kid(p8密钥对应的ID),否则会触发401鉴权错误 - 开发者令牌最长有效期为180天,到期需要重新生成
内容的提问来源于stack exchange,提问作者emw2006
相关产品推荐
相关产品推荐

