user icon

Instagramのフォロワー数をAPIで取得する

Instagramのフォロワー数取得にFacebookを使う必要が有り、両方のアカウントが必要になります。
・Facebookのアカウントが必要になります。
・Instagramのプロアカウントのみ取得可能です。プロアカウントに変更する必要が有ります。

Facebookアプリの作成

まずは、Facebookのマイアプリにアクセスします。
  • アプリを作成ボタンを押す
  • アプリ名を適当に(InstTestとかでも)、連絡先メールアドレスを入力して次へ
    ※Metaの使っている名前、InstaやFacebook等が含まれる文字は使えないようです。
  • ユースケースはその他を選択して次へ
  • アプリタイプ:ビジネスを選択
  • ビジネスポートフォリオは選択せず、アプリを作成
  • アプリに製品を追加:Instagramの設定を押す
※この辺りの手順は順番含めて結構変わるようなので、参考程度に(実際テスト中に変わった)。
その場のノリでCool! とか言って変えてるんでしょうかね。

Instagram ログインによるAPI設定

Instagramの設定を押した後の画面(メニューからは、商品>InstagramログインによるAPI設定)で設定を続けます。
現状(アプリレビューをしていない状態)では、テスト登録したユーザーしか通らないので、まずはテストユーザーを登録します。

※Instagramのプロアカウントでないと駄目なので、プロアカウントへ変更しておきます。
  • アプリの役割>役割を選択して、右上のメンバーを…のボタンを押します。
  • Instagram テスターを選択して、instaのログイン時に使用出来るユーザーネームを入力して、一覧から該当のものを選択します。
    この時点では、ユーザーは追加されますが、承認待ち状態です。
  • Instagramにログインしてプロフィールの歯車アイコン>アプリとウェブサイトを選択します。
  • テスターへのご招待で、入力したアプリ名の承認するを押します。
    これで承認待ちが消え、アプリに使えるユーザーになります。
商品>InstagramログインによるAPI設定を選択し、
3. Instagramビジネスログインを設定する で、リダイレクトURLを設定します。
このURLにtokenとの交換用codeが飛ぶので、自身の管理するURLを入力します。
埋め込みURLをコピーしてブラウザでアクセスすると、Instagramのログインフォームが出るので、上で追加したテストユーザーでログインを行います。
※プロアカウントでないと、プロアカウントへの移行を促されるので、プロアカウントへ変更してから再度アクセスします。

codeからtokenへの交換

ログインに成功すると、リダイレクト先のURLにcodeパラメータが送られるので、例えばPHPであれば$_GET[“code”]で取得します。
POSTパラメータに以下を設定し、https://api.instagram.com/oauth/access_token にPOSTします。
  • client_id : InstagramログインによるAPI設定 の InstagramアプリID
  • client_secret: InstagramログインによるAPI設定 の Instagram app secret(表示にパスワード入力が必要)
  • grant_type: 文字列で、 authorization_code を指定します。
  • redirect_uri: ビジネスログインで指定したリダイレクトURL
  • code: 渡って来たcode
成功するとJSON形式で、access_token, user_id等が返って来ます。

tokenから長期tokenへの交換

先ほどのtokenは1時間しか有効期間が無いので(後で知ったのですが)、60日間有効な長期tokenへと交換しておきます。
今度はGETで送れます。
https://graph.instagram.com/access_token
  • grant_type: 文字列で、ig_exchange_token を指定します。
  • client_secret: InstagramログインによるAPI設定 の Instagram app secret(表示にパスワード入力が必要)
  • access_token: 先ほどJSONで返って来た access_token
成功するとJSON形式で、access_token, expires_in等が返って来ます。

いよいよInstagram のフォロワー数を取得するAPIを使う

単にフォロワー数取得するだけなのに、くそ長かったですね。
ここまで来て使うのは、長期tokenだけ(またはtokenでも可)です。
URLの生成は、PHPを例にします。
$Fields = [
    // public
    "id",
    "biography",
    "followers_count",  // ユーザーをフォローするInstagramユーザーの合計数
    "media_count",
    "username", // プロフィールユーザー名
    "website",

    // private
    "name",
    "profile_picture_url",
    "follows_count",    // ユーザーがフォローするInstagramユーザーの合計数
];

//
$Get = [
    "access_token"=>$token,
    "fields"=>implode(",", $Fields),
];
$url = 'https://graph.instagram.com/v21.0/me?'.http_build_query($Get);
echo $url;
生成されたURLにブラウザでアクセスすると、Fieldsで指定したパラメータがJSON形式で返って来ます。
これで漸くフォロワー数が取得出来ました。

長期tokenの更新

長期tokenも60日で切れるので、時期が来たら更新が必要になります。設定するパラメータは次の2つです。
※ここで使えるのは長期tokenのみです。
  • grant_type: 文字列で ig_refresh_token を指定
  • access_token: 更新する長期token
上記をGETパラメータ指定して https://graph.instagram.com/refresh_access_token にアクセスすると、JSON形式で更新後のaccess_tokenが返って来ますので、以後はそちらを使用します。
Facebooktwitterlinkedintumblrmail
名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)