我目前正在尝试为MusicKit API创建开发人员令牌,我有以下内容: 10位团队Id,10位密钥Id,一个.p8 AuthKey文件。所有这些都是有效的。我已尝试使用以下代码生成令牌:
VSCode中的JavaScript:
"use strict";
const fs = require("fs");
const jwt = require("jsonwebtoken");
const privateKey = fs.readFileSync("AuthKey.p8").toString();
const teamId = "ABCDEFGHIJ";
const keyId = "1234567891";
const jwtToken = jwt.sign({}, privateKey, {
algorithm: "ES256",
expiresIn: "180d",
issuer: teamId,
header: {
alg: "ES256",
kid: keyId
}
});
console.log(jwtToken);
Python(pelauimagineering的生成器代码,来自github,有一些小改动)
import datetime
import jwt
//not a real private key but it looks something like this
secret = """-----BEGIN PRIVATE KEY-----
asdfg1rty5GSM49AgEGCCqGSM49AwEHBHkwdwIBAQQguWRXMHYkuFImkMGByqEPT
jaXQyO0WK1BjYpuDxIgNQ5nHRRFCuUOi8mgCgYIKoZIzj0DAQehcp0+Z+jwRANCAA
RCBFg8fL08QS36Fb8HmY+eFrDWMO00w5unCo5n8VyLhvttIZeByXlVsJrK/L3f/
F2wYmZme
-----END PRIVATE KEY-----"""
teamId = "ABCDEFGHIJ";
keyId = "1234567891"
alg = 'ES256'
time_now = datetime.datetime.now()
time_expired = datetime.datetime.now() + datetime.timedelta(hours=12)
headers = {
"alg": alg,
"kid": keyId
}
payload = {
"iss": teamId,
"exp": int(time_expired.timestamp()),
"iat": int(time_now.timestamp())
}
if __name__ == "__main__":
"""Create an auth token"""
token = jwt.encode(payload, secret, algorithm=alg, headers=headers)
print("----TOKEN----")
print(token)
然而,从这两个脚本生成的令牌返回HTTP 401,我做错了什么?还有其他脚本我可以试试吗?我有没有遗漏什么额外的要求?(除了团队ID、密钥ID和AuthKey.p8)我已经做了一段时间了,非常感谢您的帮助!:D
我遇到了同样的问题,请确保AuthKey.p8文件的一行上有密钥。 你的看起来像这样:
当它看起来像这样时:
这是我使用的脚本。上周刚刚用它重新升级了我的开发者令牌。我是一个iOS开发人员(不是Python开发人员),所以我不能真正解决它。我只知道它是有效的
相关问题 更多 >
编程相关推荐