【问题标题】:Error getting a userToken for Apple Music SDK with JWT使用 JWT 获取 Apple Music SDK 的 userToken 时出错
【发布时间】:2017-10-13 01:50:40
【问题描述】:

我尝试使用来自 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)
}

【问题讨论】:

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


    【解决方案1】:

    Apple 要求您使用 ES256 算法,而不是 HS256,我也遇到了同样的问题。如您所见here,您使用的 JWT 库不支持 ES256。列出的 iOS 上唯一支持它的其他库是 this one

    【讨论】:

    • 用上面的代码,我可以生成一个字符串,在终端运行命令: curl -v -H 'Authorization: Bearer [developer token]' "api.music.apple.com/v1/catalog/us/songs/203709340" 我可以得到有效与 api.music.apple.com 连接,我可以让我的应用程序正常工作。但。是一个静态字符串,苹果不推荐使用它......并且有一个固定的到期日期。 :(
    • @Fri3ndlyGerman 但是你是如何在 iOS 中添加这个库的?这使用 Swift 包管理器和 :/
    • 只是想让您和其他来这里的人知道:jwt.io 显示的信息似乎是错误的。它说 Vapor/JWT 将支持 ES256,但显然不支持:在此处查看此问题 github.com/vapor/jwt/issues/92
    • 现在至少有两个纯 Swift 库支持 ES256:github.com/IBM-Swift/Swift-JWT.git 和 github.com/klaas/CupertinoJWT
    猜你喜欢
    • 2017-11-14
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多