Depuis une semaine, j'essaie d'obtenir un jeton d'authentification à partir d'un service Web tiers en utilisant leur API avec Alamofire. J'ai mis en place différents types de solutions. Le problème est que le service Web fournit uniquement la documentation sur la façon de se connecter à leur service en utilisant curl
. Mais je veux me connecter avec Alamofire parce que je développe une application iOS. Ci-dessous, j'ai posté les différentes solutions que j'ai implémentées qui reviennent avec 400 code d'état ou 404. Quelqu'un aurait-il la gentillesse de me guider à travers cela?Convertir la commande Curl pour accélérer en utilisant Alamofire
Voici la commande curl
Je veux convertir rapidement en utilisant Alamofire:
curl "https://api.webservice.com/oauth/token?client_id=<your-client-id>&client_secret=<your-client-secret>&grant_type=client_credentials"
Pour recevoir un jeton d'accès du client d'authentification, vous devez lui fournir un numéro de client et secret client qui est à condition de.
Et voici quelques-unes des solutions que j'ai essayé la mise en œuvre:
func doAuth(){
let parameters = ["ClientID": clientID, "clientSecret": clientSecret]
Alamofire.request("https://api.everypixel.com/oauth/token", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
switch(response.result) {
case .success(_):
if response.result.value != nil{
print(response.result.value as Any)
}
break
case .failure(_):
print(response.result.error as Any)
break
}
}
let user = clientID
let password = clientSecret
let credentialData = "\(user):\(password)".data(using: String.Encoding.utf8)!
let base64Credentials = credentialData.base64EncodedString(options: [])
let headers = ["Authorization": "Bearer \(base64Credentials)"]
print(credentialData)
Alamofire.request(tokenRequestURL,
method: .post,
parameters: nil,
encoding: URLEncoding.default,
headers:headers)
.validate()
.responseJSON { response in
if response.result.value != nil{
print(response)
}else{
print("found an error")
}
}
let response = Alamofire.request(tokenRequestURL, method: .get).authenticate(user: clientID, password: clientSecret).response?.statusCode
print(response)
let key = clientID
let secret = clientSecret
let url = tokenRequestURL
var request = URLRequest(url: url!)
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.addValue("sso-key \(key):\(secret)", forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: url!) { data, response, error in
guard error == nil else {
print(error!)
return
}
guard let data = data else {
print("Data is empty")
return
}
print(response)
}
task.resume()
}