Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 无法解码令牌:该令牌无效###_Json_Swift_Laravel_Token_Jwt - Fatal编程技术网

Json 无法解码令牌:该令牌无效###

Json 无法解码令牌:该令牌无效###,json,swift,laravel,token,jwt,Json,Swift,Laravel,Token,Jwt,我正在使用Laravel5.3作为iOS应用程序的API。当我尝试使用头和参数进行HTTP调用时,会出现以下错误: message=“无法解码令牌:令牌 \“可选(\”EYJ0Exaiioijkv1QILCHbGcIjiuzi1Nij9.EYJzdWiiOjusimlZcy6Dha6Xc9Cl2xVy2FsAg9Zddo4mWxC9HcGlc1dGhCl3bVc3RMB2DPIISimlHdCl6MtQmZOzXhWijZNdGWntQxMdQmDjYYYOd0Oda1Mc0Zc0Zc0Zc0S

我正在使用Laravel5.3作为iOS应用程序的API。当我尝试使用头和参数进行HTTP调用时,会出现以下错误:

message=“无法解码令牌:令牌 \“可选(\”EYJ0Exaiioijkv1QILCHbGcIjiuzi1Nij9.EYJzdWiiOjusimlZcy6Dha6Xc9Cl2xVy2FsAg9Zddo4mWxC9HcGlc1dGhCl3bVc3RMB2DPIISimlHdCl6MtQmZOzXhWijZNdGWntQxMdQmDjYYYOd0Oda1Mc0Zc0Zc0Zc0SimZc0IzZZZZZZZU5U5U5U5U5U5Ln2OzLnZZZZZZZZLnZZLnZZZLn2MzZZZZZZZZZZZZZZZZZZZZZZZZZZZZ 无效的JWS”; “状态代码”=401;}

这是发出HTTP请求的代码:

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
,则添加