使用JWT获取Apple Music SDK的userToken时出错

时间:2017-10-13 01:50:40

标签: ios swift jwt apple-music apple-musickit

我尝试使用JWT的developerToken尝试获取Apple Music SDK的userToken失败。我已经使用了pelauimagineering / apple-music-token-generator,我可以得到一个有效且静态的userToken。但苹果建议动态,所以我试图再次使用JWT。

有人可以告诉我,我的代码有什么问题吗?谢谢

func fetchDeveloperToken() -> String? {
   func fetchDeveloperToken() -> String? {
    let iat = Date().timeIntervalSince1970
    let days = TimeInterval(24*60*60*120) //120 days
    let exp = TimeInterval(iat + days)
    let kid = "TBESJXXXXX"
    let iss = "KQ6Z6XXXXX"
    let alg = "ES256"
    let secret = "MIGTAgEAMBMGByqEU7ZHQsoVfmKCCxS5W6BnCgCgYIKoZIzj0AAQcggNoN7dTkNG/8timkkf+Z2toogAqN41YgOXXXXXXXXXXXXXXXXXXsecretkey"
    let header:[AnyHashable:Any] = ["alg":alg, "kid":kid]
    let payload:[AnyHashable:Any] = ["iss": iss,
                                     "iat": iat,
                                     "exp": exp]
    let algorithm256 = JWTAlgorithmHS256()
    return JWT.encodePayload(payload, withSecret: secret, withHeaders: header, algorithm: algorithm256)
}

1 个答案:

答案 0 :(得分:2)

Apple要求您使用ES256算法,而不是HS256,我也遇到了同样的问题。您正在使用的JWT图书馆不支持ES256,因为您可以看到here。 iOS上列出的唯一支持它的其他库是this one