Imgur APIにHTTPリクエストを送信しようとしています。タグ「cats」に関連付けられているすべての画像を取得しようとしています。 Imgur APIによると、URLは次のとおりです。 https://api.imgur.com/3/gallery/t/cats
imgur APIは、get要求を行うために必要な許可について次のように述べています。
画像情報の取得、ユーザーのコメントの検索など、公開の読み取り専用および匿名リソースの場合、必要なことは、
client_id
リクエストに。これは、画像を匿名で(画像なしで)アップロードする場合にも機能します
アカウントに関連付けられている)、または匿名を作成する場合
アルバム。これにより、どのアプリケーションがAPIにアクセスしているかがわかります。Authorization: Client-ID YOUR_CLIENT_ID
私は次の質問を見て、そこで提案されていることを試しましたが、どれも助けになりませんでした。
私の現在のコードはこれです:
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()
しかし、承認が必要であることを意味する403のステータスコードを継続的に取得します。私は何を間違えていますか?
ヘッダー値については、実際のクライアントIDにClient-ID文字列を追加する必要があると思います。
request.setValue("Client-ID <your_client_id>", forHTTPHeaderField: "Authorization")
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()
}