我在做DeviceCheck。要生成JSON web令牌&我使用的是SwiftJWT库。但我不知道如何为DeviceCheck生成DeviceCheck。
代码:
let contents = try String(contentsOfFile: filepath)
let headers = Header(kid: key_id)
struct MyClaims: Claims {
var iss: String
var iat: Date
var exp: Date
}
let jwt = JWT(header: headers, claims: MyClaims(iss: iss_id, iat: Date(timeIntervalSinceNow: 3600), exp: Date(timeIntervalSinceNow: 3600)))
let privateKey = contents.data(using: .utf8)!
let rsaJWTEncoder = JWTEncoder(jwtSigner: JWTSigner.es256(privateKey: privateKey))
var jwtString = try rsaJWTEncoder.encodeToString(jwt)在打印JWT时,我得到以下响应:
JWT(标题:SwiftJWT.Header(类型:可选(“JWT”),alg:可选(“ES256”),jku: nil,jwk: nil,crit:可选(“KEY_ID”),x5u: nil,x5c: nil,x5t: nil,x5tS256: nil,cty: nil,crit: nil),索赔:SwiftiOSDeviceCheck.ViewController.(未知上下文为$104614dbc)(未知上下文为$104614e28).MyClaims(iss:"ISS_ID",iat: 2019-06-03 11:55:53 +0000,(实例: 2019-06-03 11:55:53 +0000)
在API中,我在postman中得到了下面的响应:
无法验证授权令牌
我怎样才能解决这个问题?
发布于 2019-06-17 12:22:49
我找到了这个问题的答案。我使用CupertinoJWS而不是SwiftJWT。
let jwt = JWT(keyID: keyID, teamID: teamID, issueDate: Date(), expireDuration: 60 * 60)
do {
let token = try jwt.sign(with: p8Key)
// Use the token in the authorization header in your requests connecting to Apple’s API server.
// e.g. urlRequest.addValue(_ value: "bearer \(token)", forHTTPHeaderField field: "authorization")
print("Generated JWT: \(token)")
return token
} catch {
// Handle error
}https://stackoverflow.com/questions/56426171
复制相似问题