지난 주 나는 Alamofire와 함께 API를 사용하여 타사 웹 서비스에서 인증 토큰을 얻으려고했습니다. 다른 유형의 솔루션을 구현했습니다. 문제는 웹 서비스가 curl
을 사용하여 서비스에 연결하는 방법에 대한 문서 만 제공한다는 것입니다. 하지만 iOS 앱을 개발 중이므로 Alamofire를 사용하여 연결하고 싶습니다.Alamofire를 사용하여 신속하게 Curl 명령을 변환하십시오.
아래에는 400 개의 상태 코드 또는 404와 함께 구현 된 다른 솔루션이 게시되어 있습니다. 누군가가이 기능을 통해 나를 안내 할만큼 친절 할 수 있습니까? 여기
는 Alamofire를 사용하여 내가 신속한로 변환 할curl
명령입니다
당신은 클라이언트 ID와 클라이언트 비밀번호와 함께 제공해야 인증 클라이언트에서 액세스 토큰을 받기 위해서는
curl "https://api.webservice.com/oauth/token?client_id=<your-client-id>&client_secret=<your-client-secret>&grant_type=client_credentials"
제공됩니다.
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()
}