我正在尝试通过基于Laravel的webservice登录Swift(iOS)。在Laravel一侧,我正在使用passaport。当我尝试用邮递员登录时,它可以工作。但是我不能为斯威夫特。 Swift面像这样:
@IBAction func login(_ sender: Any) {
let url = "http://mytest:8000/oauth/token"
let myUrl = URL(string:url)
let params = [
"grant_type":"password",
"client_id": "1",
"client_secret": "W04TCZ55lIrDjaT71LOUTY0ABT1why0fyPpK8EtY",
"username": email.text!,
"password": password.text!,
"scope":"*"]
Alamofire.request(myUrl!, method: .post, parameters: params).validate(contentType: ["application/json"]).responseJSON { (response) in
switch response.result{
case .success(let data):
let json = JSON(data)
print(json)
case .failure(let error):
print(error)
}
}
}
成功的情况是可行的,但json =的响应
{
"message" : "The user credentials were incorrect.",
"error" : "invalid_credentials"
}
最后,我无法从iOS端登录。我想将Laravel后端用于Swift应用程序。有人可以帮助我吗?
最佳答案
我在这里看到的是encoding
参数,当您使用JSONEncoding.default
内容类型时,应将其设置为application/json
。 Alamofire.request()
将URLEncoding.default
设置为其默认编码,因此您的后端可能无法正确解析该调用。
因此:
Alamofire.request(myUrl!, method: .post, parameters: params, encoding: JSONEncoding.default).validate(contentType: ["application/json"]).responseJSON { (response) in
...
}
关于php - 在iOS上使用Laravel Passport(Swift),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47242932/