Instagram oEmbedエンドポイントにクエリを行い、Instagram投稿の埋め込みHTMLと基本メタデータを取得して、ほかのウェブサイトやアプリで投稿を表示します。写真、動画、リール、フィード投稿をサポートしています。
公開されているInstagramの投稿やプロフィールから埋め込みコードを取得する方法については、Instagramヘルプセンターをご覧ください。
このガイドは、Meta開発者として登録済みであり、Metaアプリをすでに作成している開発者を対象としています。
以下が必要です。
oEmbed読み取り機能への
アドバンスアクセス–
Metaアプリレビューが必須
すべてのエンドポイントは、graph.facebook.com
ホストを通じてアクセス可能です。
レート制限は、各リクエストにアプリが含めるアクセストークンの種類によって異なります。
アプリアクセストークンを使用するアプリでは、24時間あたり500万リクエストまで行えます。
クライアントトークンレート制限は、アプリトークンレート制限に比べて大幅に低くなります。制限はアプリのアクティビティに応じて変化するため、具体的な制限は提示しません。しかし、アプリがボットのような挙動(何千というリクエストを一括で行う、または単一のエージェントかアプリユーザーが何千ものリクエストを送信する)を行わない限り、制限に達することはないと考えてよいでしょう。
埋め込みHTMLは、プログラムを使って取得することも、Instagramアプリで取得することもできます。
プログラムを使ってInstagram投稿の埋め込みHTMLを取得するには、次のようにリクエストを送信します。
GET /instagram_oembed?url=<URL_OF_THE_POST>&access_token=<ACCESS_TOKEN>
<URL_OF_THE_POST>
をクエリ対象となるInstagram投稿のURLに置き換え、<ACCESS_TOKEN>
をアプリアクセストークンまたはクライアントアクセストークンに置き換えるか、Authorization
HTTPヘッダー経由でMetaに渡します。
Authorization: Bearer <ACCESS_TOKEN>
クライアントアクセストークンを使用する場合は、必ずパイプ記号を使ってMetaアプリIDと組み合わせてください。そうしないと、リクエストは失敗します。
成功すると、APIは、投稿の埋め込みHTMLおよびその他のデータを含むJSONオブジェクトを返します。埋め込みHTMLは、html
プロパティに割り当てられます。
リクエストに追加するクエリ文字列パラメーターのリストについては、Instagram oEmbedリファレンスを参照してください。fields
クエリ文字列パラメーターを含めることにより、返されるフィールドを指定することもできます。このパラメーターを省略した場合、応答にはすべてのデフォルトのフィールドが含まれます。
curl -X GET \
"https://graph.facebook.com/v21.0
/instagram_oembed?url=https://www.instagram.com/p/fA9uwTtkSN/&access_token=IGQVJ..."
curl -i -X GET \
--header "Authorization: Bearer 96481..." \
"https://graph.facebook.com/v21.0
/instagram_oembed?url=https%3A%2F%2Fwww.instagram.com%2Fp%2FfA9uwTtkSN"
読みやすくするため、一部の値は省略記号(...
)を使用して省略されています。
{ "version": "1.0", "author_name": "diegoquinteiro", "provider_name": "Instagram", "provider_url": "https://www.instagram.com/", "type": "rich", "width": 658, "html": "<blockquote class=\"instagram-media\" data-instgrm-ca...", "thumbnail_width": 640, "thumbnail_height": 640 }
url
クエリ文字列パラメーターは、次のURLフォーマットを受け入れます:
https://www.instagram.com/p/{media-shortcode}/
https://www.instagram.com/tv/{media-shortcode}/
https://www.instagram.com/{username}/guide/{slug}/{guide_id}
埋め込みHTMLには、Instagram embed.js JavaScriptライブラリへの参照が含まれます。このライブラリが読み込まれると、ページをスキャンして投稿HTMLを探し、完全にレンダリングされた投稿を生成します。ライブラリを別個に読み込む場合は、omitscript=true
クエリ文字列パラメーターをリクエストに含めます。埋め込みHTMLを手動で初期化するには、ライブラリの読み込み後にinstgrm.Embeds.process()
関数を呼び出します。
埋め込み投稿は、コンテナのサイズに合わせて調整されます。つまり、コンテナの高さは、コンテナの幅とキャプションの長さに応じて異なります。リクエストにmaxwidth
クエリ文字列パラメーターを含めることによって、最大幅を設定することができます。
可能であればすべての投稿の埋め込みHTMLをレンダリングすることをおすすめします。これを行えない場合は、投稿のサムネイル画像URLを取得して、そのURLを代わりにレンダリングすることができます。ただしその場合は、画像の横にオリジナルの著者およびInstagramへのアトリビューションと、クエリの対象であるInstagram投稿へのリンクを含む、明確なアトリビューションを提供する必要があります。
投稿のサムネイルURLとアトリビューション情報を取得するには、次のリクエストを送信します。
GET /instagram_oembed ?url=<URL_OF_THE_POST> &maxwidth=<MAX_WIDTH> &fields=thumbnail_url,author_name,provider_name,provider_url &access_token=<ACCESS_TOKEN>
<URL_OF_THE_POST>
はクエリ対象となるInstagram投稿のURLに置き換え、<MAX_WIDTH>
はレンダリングするサムネイルの最大サイズに置き換え、<ACCESS_TOKEN>
はアプリアクセストークンまたはクライアントアクセストークンに置き換えます。
curl -i -X GET \
"https://graph.facebook.com/v21.0
/instagram_oembed?url=https%3A%2F%2Fwww.instagram.com%2Fp%2FfA9uwTtkSN&maxwidth=320&fields=thumbnail_url%2Cauthor_name%2Cprovider_name%2Cprovider_url&access_token=96481..."
読みやすくするため、一部の値は省略記号(...
)を使用して省略されています。
{ "thumbnail_url": "https://scontent.cdninstagram.com/v/t51.288...", "author_name": "diegoquinteiro", "provider_name": "Instagram", "provider_url": "https://www.instagram.com/" }
アプリのレビュー申請時に、フォームの[Tell Us Why You're Requesting Oembed Read (oEmbed読み取りをリクエストする理由をお聞かせください)]フォームの[Please provide a URL where we can test Oembed Read (oEmbed読み取りをテストするためのURLを提供してください)]フィールドに入力します。そのためには、まずInstagramのoEmbedエンドポイントを使って、公式のFacebookページまたはInstagramページで公開されている投稿の埋め込みHTMLを取得します。そして、返された埋め込みHTMLをoEmbedコンテンツを表示する場所に追加し、そのページのURLをフォームの当該フィールドに入力します。
oEmbed読み取り機能の承認が完了すると、ページ、投稿、または動画を、それぞれのURLを使用して埋め込むことができます。