我试图在Onfido沙箱环境中创建一个支票,当我使用curl或python代码时它工作正常,而当我使用swift执行相同的请求时我收到错误422 iOS版。 这是确认在python中工作的代码:
def identity_check(self, applicant_id: str) -> dict:
return self._post(
'applicants/{}/checks'.format(applicant_id),
data={
'type': 'express',
'reports[][name]': 'identity',
'reports[][variant]': 'kyc',
}
)
这是给我错误422的快速代码:
func executeCheck() {
let headers: HTTPHeaders = [
"Authorization": "Token token=\(token)",
"Accept": "application/json",
]
let parameters: [String: Any] = [
"type": "express",
"reports[][name]": "identity",
"reports[][variant]": "kyc"
]
Alamofire.request(
"https://api.onfido.com/v2/applicants/\(self.applicantId)/checks",
method: .post,
parameters: parameters,
encoding: JSONEncoding.default,
headers: headers).validate().responseJSON { (response: DataResponse<Any>) in
guard response.error == nil else {
return
}
self.saveCompletedDocumentState()
}
}
答案 0 :(得分:0)
这个特殊问题与滥用Alamofire有关,尤其是'reports[][name]': 'identity'
的嵌套。你应该通过拥有一个子对象"reports": ["name": "identity"]
来嵌套。
然而,启动onfido检查的推荐方法是在后端执行。 此外,api的任何问题都可以通过Onfido技术支持来解答api@onfido.com