2016-11-30 4 views
1

Я использую Laravel 5.3 в качестве API для своего приложения для iOS. Когда я пытаюсь сделать HTTP вызовов с заголовками и параметрами, которые я получаю эти 401 ошибку:Не удалось декодировать токен: токен ###

message = "Could not decode token: The token \"Optional(\""eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjUsImlzcyI6Imh0dHA6XC9cL2xvY2FsaG9zdDo4MDAwXC9hcGlcL2F1dGhcL3Bvc3RMb2dpbiIsImlhdCI6MTQ4MDUzNzQxOCwiZXhwIjoxNDgwNTQxMDE4LCJuYmYiOjE0ODA1Mzc0MTgsImp0aSI6ImMyZmYxNzI5N2U5OGU4MzkzYzZkZWRmNTZlN2ZkMzNkIn0.u6sQqlq5k-B5jhZ7EymkXLlcTIQ-i7X_83an5irwTss\"" is an invalid JWS"; "status_code" = 401; }

Это код, который делает запрос HTTP:

let headers = ["Authorization":"Bearer \(token)"] 

    request(url! , method: .get, parameters: nil, encoding: JSONEncoding.default , headers: headers) 
     .responseJSON { response in 


     print("RESPONSE \(response)") 

Я сделал некоторые погугли и нашел пакет закодировать JWT под названием JWTDecode.swift. Вот ссылка на код: https://github.com/auth0/JWTDecode.swift. Я все еще не мог понять, как решить эту проблему.

+0

В сообщении об ошибке токен является необязательным и не был распакован, это может быть причиной. – Moritz

+0

Я сохраняю токен в контейнере, как этот 'var token: String? { didSet { позволяют настройки по умолчанию = UserDefaults.standard defaults.set (маркер, forKey: DefaultsKey.token) } 'и затем вызвать его в массиве заголовка' пусть заголовки = [ "Авторизация": «Знаменосец \ (UserDataSingleton.sharedDataContainer.token) "] n' где мне его разворачивать? – leo0019

+0

Похоже, пользователь simpleBob сделал правильный ответ. – Moritz

ответ

1

изменение

let headers = ["Authorization":"Bearer \(token)"] 

к чему-то вроде

guard let token = token else { return } 
let headers = ["Authorization":"Bearer \(token)"] 

иначе вы отправляете Optional(<token>) вместо <token>.

+0

вы имеете в виду вот этот 'guard let token = UserDataSingleton.sharedDataContainer.token else {return nil} let headers = [" Authorization ":" Bearer \ (token) "]' потому что токен сохраняется в nsuserdefaults – leo0019

+0

Точно, если вы находятся в функции, которая должна возвращать 'nil', если у вас нет токена. – Daniel

+0

ошибка 'непредвиденное не пустое возвращаемое значение в функции void ' – leo0019

Смежные вопросы