skip to Main Content

I need to fetch data from a web endpoint. I will include the instructions below. I am passing the the X-ACCESS-KEY incorrectly because I get the error that the key is invalid or the bin doesn’t belong to my account when I run the code. How do I correctly pass the key to the request then decode the response?

we’ve hosted a JSON file at at this url: https://api.jsonbin.io/v3/b/646bed328e4aa6225ea22a79. Your job is to write a script to
download the contents of the URL (hint: The X-ACCESS-KEY is $2b$10$Ke1iwieFO7/7qsSKU.GYU.oYXZMW1EeHrwd4xx9ylboJik5mstZk6)
sort the data by each elements ‘bar’ key
filter out elements where ‘baz’ is not divisible by 3
concatenate each elements ‘foo’ value

let url = URL(string: "https://api.jsonbin.io/v3/b/646bed328e4aa6225ea22a79")!
let key = "$2b$10$Ke1iwieFO7/7qsSKU.GYU.oYXZMW1EeHrwd4xx9ylboJik5mstZk6)"
var request = URLRequest(url: url)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer (key)", forHTTPHeaderField: "X-Master-Key")

var jsonData: Data?
let task = URLSession.shared.dataTask(with: request) { (data, _, err) in
    if let error = err {
        print("Error: (error)")
    } else if let data = data {
        jsonData = data
        processData()
    }
}

task.resume()

func processData(){
    if let jsonData = jsonData,
       let jsonObject = try? JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any], let records = jsonObject["records"] as? [[String: Any]] {
      
    }
}

2

Answers


  1. Three issues:

    1. Joakim correctly stated that you have to specify just the key without leading Bearer .

    2. And the hint clearly says it’s X-Access-Key not X-Master-Key

      request.addValue(key, forHTTPHeaderField: "X-Access-Key")
      
    3. The closing parenthesis at the end is not part of the token.

    Login or Signup to reply.
  2. Hello I don’t think that the error come from you key name because as API mention you can use both X-ACCESS-KEY or X-Master-Key

    {"message":"You need to pass X-Master-Key or X-Access-Key in the header to read a private bin"}
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search