В настоящее время я пытаюсь сделать запрос на аутентификацию в API PredictHQ с помощью Alamofire.
Я сгенерировал учетные данные клиента в консоли разработчика и перенес их в свой проект.Проблема заключается в том, что я использую URL https://api.predicthq.com/oauth2/token/ в своей функции * receiveJSONData () для получения сетевого статуса моих запросов.
Ниже приведены примеры, которым я следовал на веб-сайте PredictHQ https://developer.predicthq.com/oauth2/ о том, как запрос cURL должен быть отформатирован как.

1) Сначала я создал свой класс networkServiceClient
import UIKit
import Alamofire
class networkServiceClient {
private let token = "GENERATED_TOKEN_FROM_PREDICTHQ_API".data(using: String.Encoding.utf8)!.base64EncodedString()
private let secret = "GENERATED_SECRET_KEY_FROM_PREDICTHQ_API".data(using: String.Encoding.utf8)!.base64EncodedString()
private let id = "GENERATED_ID_FROM_PREDICTHQ_API".data(using: String.Encoding.utf8)!.base64EncodedString()
private let contentType = "application/json"
private var authURL = URL(string: "https://api.predicthq.com/oauth2/token/")
private var tokenDataURL = URL(string: "https://api.predicthq.com/v1/events/")
typealias webResponse = ([[String: Any]]?, Error?) -> Void
func receiveJSONData(completion: @escaping webResponse){
let loginString = String(format: "Basic %@:%@", id, secret)
let postHeaders:HTTPHeaders = ["Authorization": loginString, "Accept": contentType]
let params: [String : Any] = ["grant_type": "client_credentials", "scope": "account events signals"]
//post authentication request
AF.request(authURL!, method: .post, parameters: params, headers: postHeaders).responseJSON { (response) in
if let error = response.error {
completion(nil, error)
} else if let jsonArray = response.value as? [[String: Any]] {
completion(jsonArray, nil)
} else if let jsonDict = response.value as? [String: Any] {
completion([jsonDict], nil)
}
}
}
2) Затем я реализовал его в своем TestingViewingController
import UIKit
import Alamofire
class TestingViewController: UIViewController {
private let networkingClient = networkServiceClient()
override func viewDidLoad() {
super.viewDidLoad()
networkingClient.receiveJSONData() { (json, error) in
if let error = error {
print(error.localizedDescription)
} else if let json = json {
print(json.description)
}
}
}
}
3) Наконецвот мой вывод в консоли TestingViewController.
"error": invalid_client
