【问题标题】:Could not load module: CTLS无法加载模块:CTLS
【发布时间】:2017-06-12 10:33:18
【问题描述】:

我导入 JWT(使用 .Package(url:"https://github.com/vapor/jwt.git", majorVersion: 1))

enter image description here

项目可以构建和运行。但是当我查看 CTLS 时,Xcode 显示“无法加载模块:CTLS”。我不知道为什么。

同时,我创建的 JWT 似乎也不对。这是我的代码:

import JWT
import Vapor

get("token") { req in
let algValue = StructuredData.string("ES256")
let kidValue = StructuredData.string("CapExedKid")
let headerData = StructuredData.object(["alg":algValue,"kid":kidValue])
let header = JSON.init(headerData)
let issValue = StructuredData.string("CapExdTeam")
let sec = Int(Date().timeIntervalSince1970)
let iatValue = StructuredData.number(StructuredData.Number(sec))
let expValue = StructuredData.number(StructuredData.Number(sec+1000000))
let claimsData = StructuredData.object(["iss":issValue,"iat":iatValue,"exp":expValue])
let claims = JSON.init(claimsData)
let url = URL.init(fileURLWithPath: "/Users/aamac/Desktop/HelloWorld/AuthKey_demoKey.p8")
let data = try Data.init(contentsOf: url)
let signer = ES256.init(key: data.makeBytes())
let jwt = try JWT.init(headers: header, payload: claims, signer: signer)
let token = try jwt.createToken() 
return token }

正如 Apple Music API 所说,我使用令牌执行身份验证请求,我得到了一个 http 状态代码 500.. 我在终端中输入: curl -v -H '授权:承载 [开发者令牌]' "https://api.music.apple.com/v1/catalog/us/songs/203709340" 得到了 500..

但是我使用 Python 库来获取令牌并在终端中执行请求,它可以工作,所以我怀疑 swift 中的 JWT 是否存在某种问题...谁能告诉我??

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我遇到了类似的问题 (https://github.com/vapor/jwt/issues/47)。对我有用的是在初始化签名者时使用data.bytes.base64Decoded 而不是data.makeBytes()

    【讨论】:

    • 这似乎对我不起作用.. 您是否像我一样阅读 .p8 文件?您是否只是将私钥粘贴为字符串并将其用作密钥?您提到的链接是您的签名者 ES256 还是 RS256?谢谢你的帮助~
    • 我将私钥用作字符串(我的是 RS256)。
    猜你喜欢
    • 2011-03-08
    • 2021-01-11
    • 2015-02-09
    • 1970-01-01
    • 2016-10-09
    • 2012-09-07
    • 2012-10-10
    • 2017-09-22
    • 1970-01-01
    相关资源
    最近更新 更多