我正在尝试通过基于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/jsonAlamofire.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/

10-14 16:54
查看更多