Генерация токенов / кодировка не работает должным образом - PullRequest
0 голосов
/ 26 сентября 2018

Поэтому я использую DeviceCheck, чтобы создать уникальный токен для каждого устройства iOS и отправить его на мой сервер.Проблема в том, что токен, который я получаю, кажется намного длиннее, чем ожидалось (200+ символов).

Вот код:

@IBAction func sendInfo(_ sender: Any) {

    generateToken()

    // not actual server
    let url = URL(string: "http://myserver.com/test.asp?")
    var request = URLRequest(url: url!)
    request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
    request.httpMethod = "POST"
    let postString = "v1=\(prefix.text!)&v2=\(email.text!)&v3=\(verification)"
    request.httpBody = postString.data(using: .utf8)

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {
            print("error=\(String(describing: error))")
            return
        }

        if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
            print("statusCode should be 200, but is \(httpStatus.statusCode)")
            print("response = \(String(describing: response))")
        }

        let responseString = String(data: data, encoding: .utf8)
        print("responseString = \(String(describing: responseString))")
    }
    task.resume()

}

func generateToken(){

    if #available(iOS 11.0, *) {
        let currentDevice = DCDevice.current

        if currentDevice.isSupported{
            currentDevice.generateToken(completionHandler: { (data, error) in
                DispatchQueue.main.async {
                    if let tokenData = data?.base64EncodedString() {

                        self.verification = tokenData

                        let alert = UIAlertController(title: "Encoded Device ID", message: "\(self.verification)", preferredStyle: .alert)
                        alert.addAction(UIAlertAction(title: "Close", style: .cancel, handler: nil))
                        self.present(alert, animated: true)
                    } else {
                        self.verification = error?.localizedDescription ?? "Something Wrong!!!"

                        let alert = UIAlertController(title: "Error", message: "\(self.verification)", preferredStyle: .alert)
                        alert.addAction(UIAlertAction(title: "Close", style: .cancel, handler: nil))
                        self.present(alert, animated: true)
                    }
                }
            })
        } else {
            self.verification = "Device not supported."

            let alert = UIAlertController(title: "Error", message: "\(verification)", preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "Close", style: .cancel, handler: nil))
            self.present(alert, animated: true)
        }
    } else {
        // Fallback on earlier versions
    }
}

Что это делает, отправляет2 ввода текста и закодированный токен на сервер одним нажатием кнопки отправки.

Не уверен, почему токен такой длинный (или имеет правильный размер), не знаю, что делать отсюда .. Любойпомощь будет принята с благодарностью.

...