2018.07.01

無料で画像アップロードしまくり!?imgurのapiを活用

CMSでサイトを管理するとき何かと面倒なのがリソース管理。imgurのapiを使った匿名じゃないアプリケーションの基本をご紹介。

結構あるwysiwygエディタの画像アップロード機能

CMSを導入するとき、または弄るとき、何かと面倒なのがエディタのリソース管理。なぜって??一番面倒なのは「容量」でしょう。サイト表示は軽いに越したことはない。しかし、画像サイズ以上にぼやけた画像は使うわけにはいかない。さらにサーバー上で色々とシステムを組んでいれば共同開発環境には色々な人間が携わることになる。
まぁそれはそうと実際、「外部のアップローダ」にファイルリソースを任せるのは確実に「在り」だと思っています。
wysiwyg上で画像アップロード機能がないので付けたい。なんて意見は実は結構あったりします。以前適当なブログを運営していた時、数件の問い合わせがあったのも事実。
今回ボツになったも同然のimgurのapiを使ったファイル操作を色々書いていこうかと思ってます。

imgurに触れることになったキッカケ

imgurでなくてもファイルアップローダは何でも良かった。一番いいのはやっぱりGoogleDriveじゃないですかね?でも情報を検索するも、結局は海外のサイトの掲示板なんぞを見るハメになる。まず、GoogleApiのライブラリをダウンロードしてもwindowsでxamppでSSL何それ?って感じでエラーに悩むことになる。で、Google Apps Scriptを調べて~調べて~時間だけが過ぎる。
もういい!imgurてのがapiを公開しているなら、ファイル操作もできるだろ!?と色々やってみたわけです。

海外だけあって日本語の情報がnoneです

検索するにもユーザーが妄想を膨らませないと知りたいことを知れない時、人工知能もどうかとつくづく思う。検索エンジンのアルゴリズムも結局統計です。統計をとる方法がAIであって、ニッチ過ぎるワードには疎い錬金マシーンとでもいいましょうか。
imgurのapiについて色々調べたところ、
コンナンワカランワ。そんな時は右クリックで翻訳です。とりあえず何か次の検索ワードが発見できたりする。
でもね…ないのです日本語で解説したサイト。一応言っておくと、匿名で画像ファイルをアップロードする方法は間単に見つかる。けど、この場合、匿名であるがゆえに、ファイルを特定して消せない。間違って変な画像をアップすればそのまま放置しようって事。
エディタでそんなものありえない。過去にアップロードした画像があって、再度利用もできて、削除もできる。これがないとCMSなんかでは使えない。
でもこの情報は知ってる人だけコード見れば分かるから。という感じの内容。需要がないんでしょうかね。

PHPでimgurのAPIを使う

imgurのoatuhをjavascriptで認証→ログイン→アプリ操作。これは見つけましたかね?公式サイト内にjavascriptのサプルはありました。どこかは覚えていませんけど。
  • まず、imgurでアプリケーションを作成。
  • client_idのみ使ってlocation.hrefで飛ばす。
  • ログインしてなければログイン画面になるので、そこで登録したアカウントなんぞを入力すると認証完了。
  • 以後、ビーザーをヘッダーに加えてendpointになにかしら命令するとimgurのファイル操作が可能になる。
求めてたのはそれじゃない。ファイルを操作できればいいのではなく、簡単にファイルを操作できないと意味がない。CMSで使うならなおさら必須でしょう。エディタからログインすること自体がもうダメ!な方が触るのがwysiwygという機能ですから。

さてココからは有料情報でお届けします。できればお金下さい。

冗談です。

眠くなってきたので簡潔に。

まず、oauth2、PHPで調べる。あ!?分かったかも!!となる。

apiの仕様というより、Oauthの仕様が分かってないだけで、そんなに難しくないのが実際。

様は、typeをcodeにして、callbackでcodeが取得できる。このコードはアクセストークンを取得するために使う。このコードとsecret_idを送信すると、access tokenが返ってくる。あとは、何かとimgurのファイルを操作したいときはこのアクセストークンをいっしょに送信すれば思い通りに削除なり、説明を付与したりできる。

たとえば、javascriptのサンプルコードでtypeがtokenになってるけど何かうまくいくから、typeを適当にcodeにしてみたらrequest何たらかんらたらerrorみたいなので悩んでいればそれoauthの仕組みを知らないってことだから調べましょう。imgurを検索ワードにかけないのがミソです。もちろ、javascriptだからPHPでcurlとかfile_get_contentsやってみようってのも同じですよ。

結構色々触らせてくれるimgurAPI

画像アップロードするだけじゃないです。アルバムを複数作ったり、アプリケーションを複数作ったり、アップした画像の一覧を取得したり、アルバム指定でファイルの一覧を取得したり、該当するファイルを削除したり、アルバム自体を削除したりともっと色々できますが割愛。
wysiwygのckeditorの画像アップロードと連動させる案だったので、基本機能はクリア。でもボツ。
これはこれで他にもつながる知識を得たので良かったかな。

imgurのOauth2認証でお世話になったサイト

  1. OAuth2の解説サイトを漁る前に
  2. GoogleのOAuth2.0を使ってプロフィールを取得【PHP】
この二つのサイトのOauth2の認証の解説とPHPによるライブラリを使わないGoogleのOauth2の認証サンプルソースが非常に参考になります。
imgurのapiを使ったアカウントアップロードの実装を検討されている方は必見です!ckeditorなどの画像アップロードに連動させるとかなりいい感じだと思いますよ!