FBアプリの作成からトークンの取得まで
基本方針
基本的に下記のスタートガイドに準じる
Instagram基本表示APIスタートガイド
以下、各工程の注意点のみ
ステップ1:Facebookアプリを作成する
任意の名前でアプリを作成したら
設定 > ベーシックからプラットフォーム「ウェブサイト」を追加
ステップ2:Instagram基本表示を構成する
プロダクト、Instagramを追加し、Basic DisplyをCreate new Appする
リダイレクトURL関連の設定
以下に設定するURLはいったん同一にしておく
- 有効なOAuthリダイレクトURI
- コールバックURLの許可の取り消し
- データ削除リクエストコールバックURL
ステップ3:Instagramテストユーザーを追加する
役割 > インスタグラムテスターを追加 から
Instagramアカウント側の設定
新しいウェブブラウザーを開き、www.instagram.comにアクセスして、先ほど招待したInstagramアカウントにログインします。(プロフィールアイコン) > [プロフィールを編集] > [アプリとウェブサイト] > [テスターの招待]に移動し、招待を受け入れます。
ステップ4:テストユーザーを認証する
Instagram側のブラウザで以下を開く
https://api.instagram.com/oauth/authorize
?client_id={app-id}
&redirect_uri={redirect-uri}
&scope=user_profile,user_media
&response_type=code
リダイレクトされたURLをメモ帳にコピー、取得できたコードを記録しておく
併せて「#_」がリダイレクトURIの末尾に追加されていますが、これは不要なので削除しておく
ステップ5:トークンを取得するためにコードを交換する
※「\」はターミナルにおける改行を意味する
curl -X POST \ https://api.instagram.com/oauth/access_token \
-F client_id={app-id} \
-F client_secret={app-secret} \
-F grant_type=authorization_code \
-F redirect_uri={redirect-uri} \
-F code={code}
トークンの延長
https://graph.instagram.com/access_token
?grant_type=ig_exchange_token
&client_secret={instagram-app-secret}
&access_token={short-lived-access-token}
メディアデータの取得
とりあえずコード貼り付けてみる
トークンについてはいろいろ解説しているところがあるので一旦省きます。
スーパー適当な実証コードなんであとはがんばってください
トークンの更新処理はそのうち書く予定
<?php
$url = "https://graph.instagram.com/me/media?fields=id,media_type,media_url,permalink,thumbnail_url&access_token={access-token}&limit={欲しい件数}";
$ch = curl_init(); // 1. 初期化
curl_setopt( $ch, CURLOPT_URL, $url ); // 2. オプションを設定
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$result = curl_exec( $ch ); // 3. 実行してデータを得る
curl_close($ch); // 4. 終了
$array = json_decode( $result, true );
for ( $i = 0; $i < count( $array[ "data" ] ); $i++ ) {
if($array[ "data" ][ $i ][ "media_type" ] == "VIDEO"){
$standardResolution = $array[ "data" ][ $i ][ "thumbnail_url" ];
}else{
$standardResolution = $array[ "data" ][ $i ][ "media_url" ];
}
$post_url = $array[ "data" ][ $i ][ "permalink" ];
echo '<li><a href="'.$post_url.'" target="_blank" ><img src="'.$standardResolution.'" width="176" height="117"></a></li>';
}
//echo $result;
?>