Json 无法解码令牌:该令牌无效###
我正在使用Laravel5.3作为iOS应用程序的API。当我尝试使用头和参数进行HTTP调用时,会出现以下错误: message=“无法解码令牌:令牌 \“可选(\”EYJ0Exaiioijkv1QILCHbGcIjiuzi1Nij9.EYJzdWiiOjusimlZcy6Dha6Xc9Cl2xVy2FsAg9Zddo4mWxC9HcGlc1dGhCl3bVc3RMB2DPIISimlHdCl6MtQmZOzXhWijZNdGWntQxMdQmDjYYYOd0Oda1Mc0Zc0Zc0Zc0SimZc0IzZZZZZZZU5U5U5U5U5U5Ln2OzLnZZZZZZZZLnZZLnZZZLn2MzZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 无效的JWS”; “状态代码”=401;} 这是发出HTTP请求的代码:Json 无法解码令牌:该令牌无效###,json,swift,laravel,token,jwt,Json,Swift,Laravel,Token,Jwt,我正在使用Laravel5.3作为iOS应用程序的API。当我尝试使用头和参数进行HTTP调用时,会出现以下错误: message=“无法解码令牌:令牌 \“可选(\”EYJ0Exaiioijkv1QILCHbGcIjiuzi1Nij9.EYJzdWiiOjusimlZcy6Dha6Xc9Cl2xVy2FsAg9Zddo4mWxC9HcGlc1dGhCl3bVc3RMB2DPIISimlHdCl6MtQmZOzXhWijZNdGWntQxMdQmDjYYYOd0Oda1Mc0Zc0Zc0Zc0S
let headers = ["Authorization":"Bearer \(token)"]
request(url! , method: .get, parameters: nil, encoding: JSONEncoding.default , headers: headers )
.responseJSON { response in
print("RESPONSE \(response)")
我在谷歌上搜索了一下,找到了一个名为JWTDecode.swift的编码JWT的软件包。下面是代码的链接:。我仍然不知道如何解决这个问题。更改
let headers = ["Authorization":"Bearer \(token)"]
差不多
guard let token = token else { return }
let headers = ["Authorization":"Bearer \(token)"]
否则,您发送的是
Optional()
而不是错误消息中的
。令牌是可选的,尚未展开,这可能是原因。我正在将令牌保存在一个容器中,如以下所示`var-token:String?{didSet{let defaults=UserDefaults.standard defaults.set(token,forKey:DefaultsKey.token)}`然后在头数组中调用它let headers=[“Authorization”:“Bearer\(UserDataSingleton.sharedDataContainer.token)”]n
我应该在哪里打开它?看起来用户simpleBob已经做出了正确的回答。您的意思是这样的guard let token=UserDataSingleton.sharedDataContainer.token else{return nil}let headers=[“Authorization”:“Bearner\(token)”]
由于令牌实际上保存在nsuserdefaultsExactly中,如果您使用的函数没有令牌,则应返回nil
。错误无效函数中意外的非无效返回值
更新了答案,您不应返回nil
,您只应返回您可能使用可选的o也将其打开(如果let,保护let
或!
,则添加)