instagram graph apiを使う機会があったのですが、アクセストークンの取得でかなりはまったので取得方法と注意点についてメモしておきます
Contents
前準備
まず必要なものは以下になります
・Facebookアカウント
・インスタグラムビジネスアカウント
インスタグラムビジネスアカウントは有料ですが、FaceBookアカウントは無料のもので問題ないです
FaceBookビジネスページを作成する
既に紐づける予定のFacebookページをもっている人は不要なプロセスです
Facebookにログインします。個人用アカウントで大丈夫です。
▼「設定」から「ページ」をクリックします。
▼Facebookページを作成します。
▼ページ名などを入力し「Facebookページを作成」をクリックします。
自分に合った情報を入力して「Facebookページを作成」をクリックします。
FacebookページとInstagramプロアカウントの紐づけ
次にFacebook側でInstagramプロアカウントを紐づけます。
▼Facebookページの「設定」をクリックします。
▼Instagramをクリックします。
▼アカウントをリンクをクリックします。
1つのInstagramアカウントは、1つのFacebookページにのみリンクが可能です。既に他のFacebookページと連携している場合は解除するか、別のInstagramアカウントを選択する必要があります。
Instagramの認証画面が表示されますので認証をして連携は終わりです。
このプロセスを行わないと後のアクセストークンの3段階目を取得する際に参照するインスタグラムアカウントが存在しないため戻り値のdata部分が空でアクセストークンが取得できないので注意してください
Facebookアプリ作成
▼「次へ」をクリックします。
▼メールアドレスを入力して「認証」をクリックします。
▼当てはまるものを選択して「登録完了」をクリックします。
▼「アプリを作成」をクリックします。(下図ページに遷移しなかった場合はこちらからジャンプできます。)
▼アプリタイプにビジネスを選択して「次へ」をクリックします。
各アプリタイプの詳細については、こちらのfacebook for developers公式ドキュメントをご覧ください。Instagram Graph API(インスタグラム グラフAPI)を使用するにはビジネスを選択する必要があります。
▼アプリを作成画面でパラメータを入力します。
アプリ表示名: 好きな名前を付けて大丈夫です。「Instagram」という言葉を使うと怒られます。 アプリ連絡先メールアドレス: メールアドレスを入力してください。 アプリの目的: 代理作成か自分用かを選択してください。 ビジネスマネージャーアカウントをお持ちですか?: グラフAPIを使うだけであれば設定不要です。デイトラ生も不要です。
メモできましたら「変更を保存」をクリックします。
プライバシーポリシーとアプリアイコンを設定をしないと警告が出ますが無視して問題ありません。
Facebook開発者登録してAPIを取得するためのアプリを作成
Facebook開発者ページよりAPIを取得するためのアプリを作成します。
開発者ページより、「マイアプリ」⇒「アプリの作成」を選択し、任意のアプリ名と自身の連絡先メールアドレスを入れて新規アプリを作成します。
アプリの管理画面に入ったら「設定」⇒「ベーシック」を開きます。
ここにある【アプリID】と【app secret】をメモ帳などにメモしておいてください。
これで、アプリの準備は完了です。
Graph APIのアクセストークンを取得
ここから、Graph APIのアクセストークンを取得する作業に入ります。
InstagramのAPIのアクセストークンを取得するには、ここから3段階にわたってアクセストークンを取得する必要があります。
1段階目のアクセストークン取得
グラフAPIエクスプローラを開きます。
ページ内右部に各種設定欄があり、以下の通り設定します。
- 「Facebookアプリ」の欄は、先ほど作成したアプリの名前
- 「ユーザーまたはページ」の欄は、ユーザーアクセストークンを取得を選択
- アクセス許可の欄では、Events Groups Pagesから、「manage_pages」「pages_show_list」「business_management」を追加、Otherから、「instagram_basic」「instagram_manage_comments」「instagram_manage_insights」を追加
上記、設定が完了したら「Get Access Token」ボタンをクリックします。
ボタンをクリックするとアクセス許可の確認ポップアップが表示されるため、OKを押してポップアップを閉じます。すると、先ほど追加したアクセス許可が、緑文字から黒色の文字に変わっています。
文字色が変わったのを確認したのち、アクセストークンの欄にある文字列をコピーし、メモ帳などに控えてください。また、この先の作業でも複数のアクセストークンが出てくるため、このアクセストークンを便宜的に【アクセストークンA】とします。
ここで注意するべきは「アクセス許可」の部分でこの時に「instagram_basic」「instagram_manage_comments」「instagram_manage_insights」を追加しておかないと3段階目のアクセストークンを取得してInstagramGraphAPIを叩いてもautherrorになってしまいます。その場合は権限を修正して再度一段階目からアクセストークンを生成し直さなければいけないので注意してください
2段階目のアクセストークン取得
次に、2段階目のアクセストークンを取得します。ここでは、先ほどメモした【アクセストークンA】に加えて、アプリの項目でメモした【アプリID】と【app secret】を利用します。
https://graph.facebook.com/v16.0/oauth/access_token?grant_type=fb_exchange_token&client_id=【アプリID】&client_secret=【app secret】&fb_exchange_token=【アクセストークンA】
上記のURL内のそれぞれの項目を置き換えて、URLを作成し、ウェブブラウザでアクセスします。
これで、【アクセストークンB】が入手できます。
3段階目のアクセストークン取得
先ほど入手した、【アクセストークンB】を使って以下のURLにアクセスします。
https://graph.facebook.com/v16.0/me?access_token=【アクセストークンB】
ブラウザで以下のように表示されます。
続いて、取得した【Facebook ID】と、【アクセストークンB】を使って以下のURLにアクセスします。
https://graph.facebook.com/v16.0/【Facebook ID】/accounts?access_token=【アクセストークンB】
管理しているFacebookページが一つであれば、アクセストークンは1つだけ表示されますが、複数管理している場合、管理しているページ全てのアクセストークンが表示されます。
そのため、nameの項目をもとに、Instagramと連携させたFacebookページを探します。
英語名であれば問題ないのですが、日本語名のFacebookページの場合、Unicodeエスケープシーケンスに変換されてしまっているため、以下のサイトなどを使ってデコードして確認します。
https://tech-unlimited.com/escape-unicode.html
Instagramの内部IDを確認する
でこの段階でこれまでの設定がちゃんとできている場合はレスポンスの中に以下のようなinstagram_business_accountの情報が表示されています。でそれのValueに相当するIDがインスタグラムの内部IDになりますのでこれを保存してください
{
“instagram_business_account”: {
“id”: “xxxxxxxxxxxx” ←こっちが超大事
},
“id”: “xxxxxxxxxxx” ← こっちはFBの内部IDなので不要
}
これでInstagramGraphAPIを使用するための前準備は完了です。InstagramGraphAPIはこのビジネスアカウントの内部IDと3段階目のアクセストークンを使用して叩くのでこれが超大事です。またFBの内部IDと混同しないように注意してください。APIのパラメーターにFBの内部IDを載せると当たり前ですがautherrorになります
それではここからはPythonを使って実際にAPIを叩いていきます
参考・引用資料
コメント
[…] 関連記事:【2023年版】Instagram Graph APIのアクセストークンを取得する方法 […]
[…] 関連記事:【2023年版】Instagram Graph APIのアクセストークンを取得する方法 […]
[…] →【2023年版】Instagram Graph APIのアクセストークンを取得する方法 […]
[…] 関連記事:【2023年版】Instagram Graph APIのアクセストークンを取得する方法 […]
[…] 関連記事:【2023年版】Instagram Graph APIのアクセストークンを取得する方法 […]