如何使用 swift 3 响应中的访问令牌

How to use access token from response using swift 3

所以我正在制作一个发送用户名和密码的登录应用程序,服务器用访问令牌回复....我试图保存这个令牌供以后使用,但我真的不能。这是我的代码,服务器响应以备不时之需 导入 UIKit

class ViewController: UIViewController {

    @IBOutlet weak var PhoneNumber: UITextField!

    @IBOutlet weak var Password: UITextField!
    //***************************************LogIn**********************************************\
    @IBAction func Login(_ sender: UIButton) {

        guard let url = URL(string: "https://goollyapp.azurewebsites.net/Token") else {return}
        var request = URLRequest(url: url)
        request.httpMethod = "POST"
        let postString = "username=" + PhoneNumber.text! + "&password="+Password.text!+"&grant_type=password"
        print(postString)
        request.httpBody = postString.data(using: .utf8)
        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            if let response = response {
                print(response)
            }
        }
        task.resume()
    }
}

声明 json 变量的地方替换为:

let json = try? JSONSerialization.jsonObject(with: data, options: []) as! [String: Any]

然后您可以通过以下方式访问令牌:

let token = json["access_token"] as! String

(收到成功的 JSON 响应后)

然后您可以按如下方式实现单例:

class Token {

    // Can't init a singleton
    private init() { }

    static let sharedInstance = Token()

    var tokenString = ""

}

如果您想将令牌保存在一个变量中以便以后使用,试试这个 (键是您响应对象中键的对应名称)

let token = httpResponse?.allHeaderFields["SECURITY-TOKEN"] as? String

let task = URLSession.shared.dataTask(with: request) { data, response, error in
            let httpResponse = response as? HTTPURLResponse
            let token = httpResponse?.allHeaderFields["SECURITY-TOKEN"] as? String
                print(token)
 }
 task.resume()