web-dev-qa-db-ja.com

Swift

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

私は次の質問を見て、そこで提案されていることを試しましたが、どれも助けになりませんでした。

資格情報を含むJSON NSURLRequest

パラメータ付きのSwift GETリクエスト

SwiftでhttpHeaderを取得して設定する方法は?

私の現在のコードはこれです:

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のステータスコードを継続的に取得します。私は何を間違えていますか?

15
joey

ヘッダー値については、実際のクライアントIDにClient-ID文字列を追加する必要があると思います。

request.setValue("Client-ID <your_client_id>", forHTTPHeaderField: "Authorization")
22
user5741915

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()
}
2
Kiran jadhav