我试图发送令牌到我的服务器来检查令牌是否仍然有效或已过期。令牌值将从设备上保存的数据中提取。但无论我尝试什么,它总是给我“丢失的标记”,这是我发送空字符串时的状态消息。将令牌发送到服务器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! 我相信我没有正确地从保存的对象中检索令牌。 –