Я сейчас учусь быстро, поэтому прошу прощения за софтбол. Моя цель здесь - создать и отобразить ответ API в приложении. Мой первый шаг - получить токен доступа. Следующим шагом является использование этого токена в вызове API для получения нужных мне данных.
Я могу заставить начальный вызов работать с помощью AlamoFire. Я также могу получить ответ и проанализировать его на предмет токена. Однако я не могу сохранить этот токен вне функции, что означает, что я не могу сделать свой второй вызов.
Из того, что я читаю, мне нужно использовать структуру для назначения ответа api в глобально доступную переменную, но, похоже, мне все еще что-то не хватает, поскольку я не могу присвоить значение переменной через структуру. Я пытаюсь вывести токен на экран в качестве доказательства того, что я сохранил токен в глобально доступном месте. Попытка определения местоположения находится внизу под номером resultstext.text = temptext + tempstore + ???token
. Однако он не позволяет мне вызывать access_token или token, поскольку это «неразрешенные идентификаторы». Я боролся с этим время от времени несколько дней, и мне нужен пу sh, чтобы это снова заработало.
- Это лучший способ сделать это?
- Если да, то что я делаю не так?
Заранее благодарю вас за любую информацию!
import UIKit
import Alamofire
class ViewController: UIViewController {
@IBOutlet weak var partnumberlabel: UILabel!
@IBOutlet weak var partnumberentry: UITextField!
@IBOutlet weak var storelabel: UILabel!
@IBOutlet weak var storeentry: UITextField!
@IBOutlet weak var resultstext: UILabel!
struct Tken: Codable {
let access_token: String
enum CodingKeys: String, CodingKey {
case access_token = "access_token"
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func submitbutton(_ sender: Any) {
let headers:HTTPHeaders = [
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "PostmanRuntime/7.20.1",
"Accept": "*/*",
"Host": "api.xxx.xxx",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "206",
"Connection": "keep-alive"
]
let params = [
"client_id": "xxx",
"client_secret": "xxx",
"account": "xxx",
"user": "xxx",
"grant_type": "xxx",
"scope": "xxx"
]
let token_url = "https://api.xxx.xxx/auth/connect/token"
AF.request(token_url, method: .post, parameters: params, headers: headers).responseJSON { response in
switch response.result {
case .success(let JSON):
print("button tapped")
let response = JSON as! NSDictionary
let token = response.object(forKey: "access_token") as! String?
do {
let res = try JSONDecoder().decode(Tken.self, from: JSON as! Data)
} catch {
print(error)
}
print(token!)
print("the end")
case let .failure(error):
print(error)
}
}
let temptext = partnumberentry.text!
let tempstore = storeentry.text!
resultstext.text = temptext + tempstore + ???token
}
}