J'essaie de faire une requête HTTP à l'API Imgur. J'essaie de récupérer toutes les images associées à la balise "chats". L'URL, selon l'API Imgur est: https://api.imgur.com/3/gallery/t/cats
l'API Imgur indique ce qui suit concernant l'autorisation nécessaire pour effectuer des requêtes get:
Pour les ressources publiques en lecture seule et anonymes, telles que l’obtention d’une image info, consultation des commentaires des utilisateurs, etc. tout ce que vous avez à faire est d’envoyer un en-tête d'autorisation avec votre
client_id
dans vos demandes. Ça aussi fonctionne si vous souhaitez télécharger des images anonymement (sans l'image
être lié à un compte), ou si vous souhaitez créer un compte anonyme
album. Cela nous permet de savoir quelle application accède à l'API.Authorization: Client-ID YOUR_CLIENT_ID
J'ai regardé les questions suivantes et essayé les solutions suggérées, mais aucune d'entre elles n'a aidé.
JSON NSURLRequest avec informations d'identification
Demande Swift GET avec paramètres
Comment faire un Http obtenir et définir httpHeader dans Swift?
Mon code actuel est le suivant:
let string = "https://api.imgur.com/3/gallery/t/cats"
let url = NSURL(string: string)
let request = NSMutableURLRequest(URL: url!)
request.setValue("clientIDhere", forHTTPHeaderField: "Authorization")
//request.addValue("clientIDhere", forHTTPHeaderField: "Authorization")
request.HTTPMethod = "GET"
let session = NSURLSession.sharedSession()
let tache = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
if let antwort = response as? NSHTTPURLResponse {
let code = antwort.statusCode
print(code)
}
}
tache.resume()
Mais je reçois continuellement un code de statut de 403, ce qui signifie qu'une autorisation est requise. Qu'est-ce que je fais mal?
Je pense que vous devez ajouter Client-ID chaîne à votre ID client actuel comme pour la valeur de l'en-tête:
request.setValue("Client-ID <your_client_id>", forHTTPHeaderField: "Authorization")
Mise à jour pour Swift 4:
func fetchPhotoRequest(YOUR_CLIENT_ID: String) {
let string = "https://photoslibrary.googleapis.com/v1/albums"
let url = NSURL(string: string)
let request = NSMutableURLRequest(url: url! as URL)
request.setValue(YOUR_CLIENT_ID, forHTTPHeaderField: "Authorization") //**
request.httpMethod = "GET"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let session = URLSession.shared
let mData = session.dataTask(with: request as URLRequest) { (data, response, error) -> Void in
if let res = response as? HTTPURLResponse {
print("res: \(String(describing: res))")
print("Response: \(String(describing: response))")
}else{
print("Error: \(String(describing: error))")
}
}
mData.resume()
}