Client IDを取得する
1. Instagram Developer Documentation にアクセスして、 Register your application ボタンをクリックする。(要ログイン)
2. デベロッパー登録をする( URL・電話番号・APIを使って何を構築するか 、をそれぞれ記入)。
3. Manage Clients 画面 > Register a New Client ボタン > Register new OAuth Client 画面で、 アプリケーション名・(アプリケーションについての)説明・WebSite・OAuthのリダイレクトURL をそれぞれ記入。(全項目入力必須、後で編集可能)
4. 取得したClientIDを使って情報を取得(JSON形式)。
https://api.instagram.com/v1/media/popular?client_id=CLIENT-ID
※個人の投稿した写真を見る時や、コメントやLikeを管理する際には、 AOuth認証が必要となってくるが、ポピュラー写真を閲覧するだけの場合は特に認証は必要ない。
AOuth認証( Access Token を取得する)
1. Access Token を取得するために必要な code を取得する。
https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code
上記のURLに自分が登録した値を入力してブラウザからアクセスする。
2. 遷移した画面で認証すると、redirect_uri に設定したURLにcode 付きでリダイレクトされる。
http://REDIRECT-URI?code=xxxxxxxxxxxxxxxxx
※ユーザがアクセスを拒否した場合以下の結果を返すので、適宜エラー処理を行う
● error: access_denied
● error_reason: user_denied
● error_description: The user denied your request
3. Access Token を要求する。
[ AccessToken の取得に必要なパラメータ ]
● client_id … クライアントID
● client_secret … クライアントシークレット
● grant_type … 現在、”authorization_code”のみ指定することができる。
● redirect_uri … 認証リクエストを送信した際にredirect_uriで指定した値。(注意: この値は、認証リクエストで指定した値と完全に一致していなければならない。)
● code … 認証ステップで受け取ったcodeパラメータの値
● client_id … クライアントID
● client_secret … クライアントシークレット
● grant_type … 現在、”authorization_code”のみ指定することができる。
● redirect_uri … 認証リクエストを送信した際にredirect_uriで指定した値。(注意: この値は、認証リクエストで指定した値と完全に一致していなければならない。)
● code … 認証ステップで受け取ったcodeパラメータの値
※トークンの有効期限が含まれないことに注意する。返されたaccess_tokenは、明示的な有効期限はない。アプリケーションは、ユーザがアクセスを拒否したり、一定時間経過後にトークンの有効期限が切れた場合を適切に処理する必要がある。その場合には、レスポンスデータのmeta情報に “error_type=OAuthAccessTokenError” という値が入る。
今回、取得したAccessTokenはSessionに入れて管理した。