メニューアイコン

ハリマブログ

InstagramのAPI使用が超厳しくなったので、手順をもう一度さらっておく。

Akito Kageyama

2016.06.07

画像|InstagramのAPI使用が超厳しくなったので、手順をもう一度さらっておく。

2016年6月1日からInstagram の新しいAPI仕様規約が施工されました


どうも!ハリマニックスのエンジニア陰山です。
インスタのAPIの仕様が変わりましたねー。
これまでのアクセストークンでは権限が足りなかったり、App自体を承認しないとダメみたいです。

というわけで、開発用アカウントの取得から特定のユーザーの投稿を取得するまでを、まるっとさらっておきましょう!
ほぼ自分用の備忘録です。

アカウントを取得する


インスタグラムのトップページから無料で登録しましょう。
FBアカウントでも登録できますが、今回はメールアドレス・名前・アカウント名・パスワードを入れて普通に登録します。

開発者機能を使うにはメールアドレスの認証と電話番号の登録が必要なようですので、自動返信で来たメールに従って認証します。


ログイン後、フッターの API というリンクから開発者ページに行きます。

Hello Developers.


早速ヘッダーの Manage Clients からアプリを登録します。
全項目埋めないと怒られますので、全て埋めます。
Description は適当に英語で目的を書きます。日本語でもよかったのかな?

Valid redirect URIs には、アクセストークンを取る際にリダイレクトさせるURLを登録します。
存在しないURLでもいいので、先に設定した Website URL以下で設定しておけばいいです。


ここでハマッタ!


このRedirect URI で結構はまりましたので、ポイントを書いておきます。
1. URI と書いてますが、URLを書いて下さい。勝手に設定したドメイン以下でリダイレクトされると思い込んでました。。
2. 入力した後、Enterを押し忘れないでください。入力内容がボタン状にならなければ受け付けられません。
エラーメッセージがかなり塩対応なので、注意してくださいw




Sandbox なるもの


謎の言葉が出てきましたが、大丈夫。なんだかよくわからないヤツではありますが、怖くないですよ。
自分以外の投稿を取得するには、ここで取得するユーザーさんを登録しておきます。


アカウント名を入力したら、赤い背景で not saved と出ます。
下の Save Changes で保存して、戻ってくると無事 pending になっています。


ようやく、アクセストークンを取りに行きましょう!


アクセストークンに権限設定が!

今までのURLでは、自分以外のユーザーの投稿を取るどころか、user_id を取得することすらできなくなりました。
お尻に&scope=public_contenを付けて、このトークンの権限設定をしておきます。

https://api.instagram.com/oauth/authorize/?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=token&scope=public_content


ブラウザで直接アクセスしてアクセストークンを取得します。
{CLIENT_ID}{REDIRECT_URI}は作成中のアプリのものを入れてください。


ここでハマッタ!


アクセストークンを取ろうとして、
{"code": 403, "error_type": "OAuthForbiddenException", "error_message": "Implicit authentication is disabled"}

と出た場合、Manage Clients のEDIT->Security で Disable implicit OAuth のチェックを外して再度試してください。




リダイレクトされたURIの、 #access_token= から後ろがアクセストークンです。


user_id を取得する


今までお世話になってきたサードパーティ様方も軒並みチーンです。
でも大丈夫。直打ちしたら取得できます。

https://api.instagram.com/v1/users/search?q={アカウント名}&access_token={取得したアクセストークン}


アカウント名には SandBox に登録したものを入れて下さい。登録していない場合、
{"meta": {"code": 200}, "data": []}

というまたソコソコ塩な結果が返ってきます^^;
うまく設定ができていれば、ここでuser_id がゲットできます。


あとは適宜オブジェクトを取得してきます。
PHPだと例えば
$instagram_object = json_decode(
  @file_get_contents(
    "https://api.instagram.com/v1/users/{$user_id}/media/recent/?access_token={$access_token}&count={$count}"
  )
);


でオブジェクトを取ってきて、 var_dump した結果を見ながら適宜HTML書けばいいと思います。



かなりツンなインスタちゃん。。。

言葉がね、わかりにくくて苦戦しがちなインスタAPI。
しかも使う機会が少ないから忘れる悲しい年齢・・・( ;∀;)



まとめ


今回の仕様変更で作成できるAppやユーザー数に制限が出来たみたいですね。
とはいえ、クライアントさんのポストをクライアントさんのサイトに乗せるくらいなら制限内で十分できます。それ以上だと、相当厳しい(らしい)インスタグラムの審査に通る必要があります。
詳しくは機会があればまた書きます~。

アイコン: 資料作成資料作成 アイコン: デザイン・企画デザイン・
企画
アイコン: WEBWEB アイコン: 設計・製図設計・製図 アイコン: 印刷・出力印刷・出力 アイコン: 加工加工