我試圖發送令牌到我的服務器來檢查令牌是否仍然有效或已過期。令牌值將從設備上保存的數據中提取。但無論我嘗試什麼,它總是給我「丟失的標記」,這是我發送空字符串時的狀態消息。將令牌發送到服務器Swift 3
// load content in user var
user = UserDefaults.standard.value(forKey: "parseJSON") as? NSDictionary
// if user is once logged in/register, keep him logged in
if user != nil {
print(user as Any)
let userToken = user!["token"] as? String
let url = NSURL(string: "http://fmm.dummy.com/api/v1/auth/me")!
var request = URLRequest(url: url as URL)
request.setValue("Bearer \(String(describing: userToken))", forHTTPHeaderField: "Authorization")
request.httpMethod = "POST"
當我編輯並執行此操作時,錯誤消息更改爲「無效令牌」,這意味着我正在發送一些東西。它只是不正確
// load content in user var
user = UserDefaults.standard.value(forKey: "parseJSON") as? NSDictionary
// if user is once logged in/register, keep him logged in
if user != nil {
print(user as Any)
let userToken = user!["token"] as? String
let a: Character = "<"
let b: Character = ">"
let url = NSURL(string: "http://fmm.dummy.com/api/v1/auth/me")!
var request = URLRequest(url: url as URL)
request.setValue("Bearer .append\(a)\(String(describing: userToken)).append\(b)", forHTTPHeaderField: "Authorization")
request.httpMethod = "POST"
//launch session
URLSession.shared.dataTask(with: request) { data, response, error in
有人可以請幫我找出什麼是做錯了? 謝謝
///編輯 嗨,當我編輯,因爲你有建議,想出了這個,我甚至無法打印到控制檯。以下是您考慮的完整代碼。感謝您的迴應。 if let user = UserDefaults.standard.object(forKey:「parseJSON」)as? [String:Any], let userToken = user [「token」] as?字符串{
let url = URL(string: "http://fmm.dummy.com/api/v1/auth/me")!
var request = URLRequest(url: url)
let tokenString = "Bearer " + userToken
request.setValue(tokenString, forHTTPHeaderField: "Authorization")
request.httpMethod = "POST"
//launch session
URLSession.shared.dataTask(with: request) { data, response, error in
//check if no error
if error == nil{
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary
guard let parseJSON = json else{
print ("Error While Parsing")
return
}
print(parseJSON)
let statusMsg = parseJSON["status"] as? String
if statusMsg == "OK"{
//token still valid
self.login()
}else {
//token is invalid
// get main queue to communicate back to user
DispatchQueue.main.async(execute: {
let message = parseJSON["status_msg"] as! String
appDelegate.infoView(message: message, color: colorSmoothRed)
})
}
}catch{
// get main queue to communicate back to user
DispatchQueue.main.async(execute: {
let message = "\(error)"
appDelegate.infoView(message: message, color: colorSmoothRed)
})
return
}
}else{
// get main queue to communicate back to user
DispatchQueue.main.async(execute: {
let message = error!.localizedDescription
appDelegate.infoView(message: message, color: colorSmoothRed)
})
return
}
}.resume()
}
我想在appdelegate.swift來檢查,如果從以前的登錄保存令牌依然有效,或者已經過期編寫代碼!用戶設備上保存的對象如下。當我將用戶打印到控制檯時,我得到了這個。 :: -
可選({ 響應= { 令牌= 「eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjIsImlzcyI6Imh0dHA6XC9cL3htbS54bW9iaWxlbW9uZXkuY29tXC9hcGlcL3YxXC9hdXRoIiwiaWF0IjoxNDk2ODUyNTkxLCJleHAiOjE0OTY4NTYxOTEsIm5iZiI6MTQ5Njg1MjU5MSwianRpIjoiOTFhYjE0MjZkMGZmN2RjZDVjOTQzNTlkZGY4OGY0ZmYifQ.WaQFprfRbJMDQ72IORtWrcSmUqY3EaJp5BAqjijvUAc」; 驗證= 1; }; 狀態= OK; })
感謝您的及時答覆,請檢查我的編輯。 非常感謝你 –
什麼是繼續性問題?並請。我寫*從不使用NSDictionary的屬性列表兼容的字典*。 JSON對象屬性列表符合 – vadian
上面的代碼完全沒有做什麼,甚至沒有顯示錯誤。對不起,如果我很天真,完全沒用,但我是一個3周大的swifty! 我相信我沒有正確地從保存的對象中檢索令牌。 –