1
3

More than 5 years have passed since last update.

Imgur APIで画像をアップロードするつもり

Posted at

(注)私は失敗してます。

Imgurとは?

海外の画像アップロードサイト。某掲示板では事実上の標準として使われています。他のアップローダに比べ消えることが少ない(というか消さない限り消えない)のが特徴です。

ちなみに読み方は"image-er"(イメージャー)だそう。

Imgur API

アップロードその他は、全てSSL通信で行います。私はC++で実装していたのでOpenSSLを使用しました。
APIにはOAuthによるユーザー認証が必要なものとそうでないものがありますが、今回は認証の不要なもののみを使用します。
API自体はREST APIで作られており、慣れている人ならそんなに迷わないのかも。

Imgur APIを使う

アプリケーションの登録

Imgurのアカウントを作成して、アプリケーションの登録をします。特に難しいことは無いと思います。

Screen Shot 2015-10-22 at 00.15.41.png

  • Application name : アプリケーションの名前
  • Authorization type : 今回は一番下を。ユーザー認証を使う場合は2番めを使います(たぶん)
  • Authorization callback URL : たぶんOAuthに使うんでしょう。適当なURLを
  • Application website : アプリケーションの公式サイト
  • Email : Eメールアドレス。(クライアントID等が送られてきます)
  • Description : アプリケーションの説明文

登録に成功するとClient IDとClient secretの2つの文字列が表示されます。
今回はClient secretは特に使いません。クライアントIDのみでAPIにアクセスできます。

匿名モードで画像をアップロードする

https://api.imgur.com/3/image/ に対してPOSTメッセージを送ります。

api.imgur.com
POST /3/image HTTP/1.0
host: api.imgur.com
Content-length: xxx
Connection: close
Authorization: Client-ID (クライアントID)

image=(画像データ)

画像データは、Base64エンコード、URLエンコードをして突っ込めば大丈夫そう。公式を見る限りバイナリデータやURLにも対応しているようです。

{"data":{"error":"Image format not supported, or image is corrupt.","request":"\/3\/image\/","method":"POST"},"success":false,"status":400}

このように、無事エラーメッセージが返ってきました。
どのようなHTTPボディに対しても同じエラーを返すようです。

1
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3