【问题标题】:JWT Authentication with Wordpress REST API in Swift在 Swift 中使用 Wordpress REST API 进行 JWT 身份验证
【发布时间】:2019-06-11 03:48:18
【问题描述】:

我正在尝试通过 Swift 在我的 Wordpress 博客上发帖。我正在使用带有 Java Web 令牌 (JWT) 身份验证的 Wordpress REST API。第一步是使用 HTTP POST 方法将用户凭据传递给服务器。然后,服务器返回一个 JSON 对象,其中包含身份验证所需的 JWT 令牌。我可以使用像 Postman 这样的 REST API 程序来完成这一切,但我在使用 Swift 代码时遇到了问题。

我的凭据发送得很好,服务器返回了一些数据,但我无法从这些数据中获取令牌。

此 Swift 代码由 Postman 应用生成:

import Foundation

let headers = [
  "Content-Type": "application/json",
  "cache-control": "no-cache",
]
let parameters = [
  "username": "myUsername",
  "password": "myPassword"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://myDomain/wp-json/jwt-auth/v1/token")! as URL,
                                    cachePolicy: .useProtocolCachePolicy,
                                timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()

当我在 Postman 中执行 HTTP POST 命令时,我得到了这个 JSON:

{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvY3F1aWNrLmNhIiwiaWF0IjoxNTQ3Njc3MDMzLCJuYmYiOjE1NDc2NzcwMzMsImV4cCI6MTU0ODI4MTgzMywiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMyJ9fX0.DgxmmSFKnEdXuWi5EiBk1BpFvWrD57KIE8TiWazId-4",
"user_email": "myEmail",
"user_nicename": "myUsername",
"user_display_name": "myUsername"
}

无论如何使用 Swift 可以获得同样的结果吗?我想这是由 session.dataTask 方法返回的,我只是不知道如何解析它。

【问题讨论】:

    标签: swift wordpress-rest-api


    【解决方案1】:

    好的,所以答案是将其添加到 session.dataTask 方法(在 else 闭包中)。

    let jsonObject = try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! NSDictionary
                let query = jsonObject["token"] as! String
                print(query)
    

    【讨论】:

      【解决方案2】:

      我知道这是一篇旧文章,但我也在尝试在 Swift 中将我的 JWT-AUTH REST API 与 WordPress 一起使用。我已经获得了令牌,但是,我想知道如何使用它来访问某些受保护的页面?即:my website.com/user-page/USERNAME 其中 USERNAME 是用户名,如果用户使用该用户名登录,它只提供对 tis 页面的访问。

      我尝试在邮递员中将令牌作为 BearerToken 投入,但没有运气!

      【讨论】:

        猜你喜欢
        • 2016-03-24
        • 2021-08-19
        • 2016-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-02
        • 2016-01-08
        • 2019-07-21
        相关资源
        最近更新 更多