Instagram oneboxes 用のアプリトークンを設定する

:warning: このガイドが最初に書かれてから後の重要な更新:

  1. アプリレビューが必須になりました。 2021年9月以降、Metaはアプリが App Review を通過し、oEmbed Read 権限(2025年4月8日以降に作成されたアプリでは Meta oEmbed Read と呼ばれます)の承認を受けることを義務付けています。これがないと、oEmbed API呼び出しは失敗します。承認を得るためのヒントについては、Metaの App Review提出ガイダンス を参照してください。

  2. Instagramのoneboxが正しくレンダリングされない可能性があります。 2025年11月3日現在、MetaはInstagramのoEmbedレスポンスから thumbnail_urlthumbnail_widththumbnail_heightauthor_name のフィールドを削除しました。DiscourseのInstagram oneboxコードは現在これらのフィールド(lib/onebox/engine/instagram_onebox.rb)に依存しているため、埋め込みが壊れたり空になったりする可能性があります。

  3. 投稿(post)とIGTVのURLのみがサポートされています。 現在、Discourseがoneboxできるのは、Instagramの /p/ (投稿) および /tv/ (IGTV) のURLのみです。リール (/reel/) のURLはサポートされていません。

  4. Facebook開発者コンソールのUIが変更されました。 以下のスクリーンショットは2020年12月に撮影されたものですが、UIは大幅に変更されています。基本的な手順は似ていますが、正確な画面やオプションは異なる場合があります。


すでにDiscourseサイトに関連付けられているFacebookアプリをお持ちの場合は、FacebookアプリへのoEmbedの追加まで下にスクロールしてください。

Facebook開発者アカウントとFacebookアプリをお持ちでない場合:

https://developers.facebook.com/ にアクセスします。現在ログインしていない場合は、Facebookアカウントでログインするように求められます。以前にアカウントを開発者アカウントに「移行」していない場合は、移行を求められることがあります。電話番号を追加したり、その他の手順を完了したりして、Facebookでアカウントを確認するよう求められる場合があります。プロンプトに従って、Facebookが要求する操作を実行する必要があります。

Facebook開発者アカウントが作成できたら、Facebook開発者のホーム画面から「マイアプリ」をクリックします。

…そして「アプリを作成」をクリックします。

アプリのタイプとして「その他」を選択し、「続行」をクリックします。

「アプリ表示名」と「アプリの連絡先メールアドレス」を入力します。利用規約とポリシーを読んだ後、「アプリを作成」をクリックできます。

ロボットの場合: ここには見るものはありません。ビープ、ボープ、ブープ。:robot:

ロボットでない場合: 「私はロボットではありません」をクリックし、プロンプトに従い、「送信」をクリックします。

おめでとうございます!Facebookアプリが作成されました!

FacebookアプリへのoEmbedの追加:

製品のリストの一番下までスクロールし、「oEmbed」を見つけて「設定」をクリックします。

oEmbed製品の使用方法に同意する場合は、チェックボックスをクリックし、「確認」をクリックします。

oEmbed製品が追加されました。「設定」をクリックします。

「表示名」と「連絡先メールアドレス」はすでに記入されているはずです。「プライバシーポリシー」と「利用規約」のURLを入力する必要があります。利用可能なオプションのリストから「カテゴリ」を選択します。すべてに満足したら、「変更を保存」をクリックします。

画面上部のトグルをクリックして、「開発中」モードから「ライブ」モードに切り替えます。

「モードを切り替え」をクリックします。

アプリのレビュー申請(2021年以降必須):

アプリが本番環境でoEmbed APIにアクセスできるようになる前に、アプリレビューに提出し、oEmbed Read 権限(2025年4月8日以降に作成されたアプリの場合は Meta oEmbed Read)をリクエストする必要があります。

  1. アプリのダッシュボードで、アプリレビュー権限と機能 に移動します。
  2. oEmbed Read (または Meta oEmbed Read) を見つけて、「リクエスト」をクリックします。
  3. リクエストボタンがアクティブになる前に、テストAPI呼び出しを正常に行う必要がある場合があります。最初のAPI呼び出しから最大24時間かかることがあります。
  4. 提出する際は、Discourseサイト上のInstagram埋め込みを含むURLを提供し、サイトがoEmbed APIを使用してInstagramの投稿を埋め込むために Discourse フォーラムソフトウェアを使用していることを説明します。

詳細な提出ガイドラインについては、Metaの oEmbedドキュメント を参照してください。

アプリアクセストークンの生成:

すべて完了したら、Facebookの手順に従ってアプリアクセストークンを生成できます。アプリアクセストークン を参照してください。「アプリ ID」フィールドの値と「アプリのシークレット」フィールドの値をコピーする必要があります。アプリのシークレットを取得するには、「表示」をクリックします。再認証などを求められることがありますが、コピーできる長い16進数の値が表示されるはずです。

Facebookのドキュメントに従い、これらの値をFacebookに送信してトークンを生成する必要があります。curl の使用に慣れていますか?素晴らしい!彼らは以下を提案しています({your-app-id}{your-app-secret} を上記画面でコピーした値に置き換えてください)。

curl -X GET "https://graph.facebook.com/oauth/access_token?client_id={your-app-id}&client_secret={your-app-secret}&grant_type=client_credentials"

あるいは、その2つの値を置き換えた後のURLだけをブラウザにコピーしても機能するはずです。

https://graph.facebook.com/oauth/access_token?client_id={your-app-id}&client_secret={your-app-secret}&grant_type=client_credentials

Facebookは、以下のような例のような小さなJSONの塊で応答します。

{"access_token":"1234567890654321|c3bd55c09fc5e561552ad7a8717","token_type":"bearer"}

引用符を除いた access_token の値をコピーし(私の例では 1234567890654321|c3bd55c09fc5e561552ad7a8717 となります)、Discourseサイトの [設定] に移動します。Onebox設定にある facebook_app_access_token というサイト設定を見つけます。「access_token」の値をこのフィールドに貼り付けます。

:white_check_mark: をクリック…これで完了です!

サイトの投稿に https://www.instagram.com/p/CIRhYzFM7Lu/ のようなURLを貼り付けると、以下のような素敵なoneboxが表示されるはずです。

https://www.instagram.com/p/CIRhYzFM7Lu/

「いいね!」 17

新しい oEmbed 読み取り機能とアプリ審査要件

本日 2021 年 6 月 8 日、Graph API および Marketing API の v11.0 を発表しました。このアップデートに伴い、 oEmbed API にアクセスするには新しい要件が適用されます。現在 oEmbed API にアクセスしているアプリの一部は、これらの変更の影響を受ける可能性があります。

oEmbed API へのアクセスを継続するには、2021 年 9 月 6 日までに アプリを審査申請 する必要があります。oEmbed API への新しいアクセス権を申請する場合も、アプリの審査申請が必要です。

詳細については、更新された要件 をご確認してください。2021 年 9 月 6 日までに oEmbed API 機能の審査が完了していないアプリは、この機能へのアクセスを失います。 アプリの oEmbed アクセスに支障が出ないよう、できるだけ早くアプリ審査を申請してください。

Facebook の支配者たちからの新しいルールです。私はすでに両方のアプリを審査申請しました。Instagram の埋め込みが含まれる公開投稿を見つけ、統合の仕組みを示すために直接リンクしました。これで十分であることを願っています。

「いいね!」 8


残念ながら、審査に不合格となりました。

以下が私が提出した内容です。

ご提出の詳細

Facebook の審査担当者は、権限や機能の使用方法がFacebook プラットフォームポリシーに準拠しているか確認するために、アプリへのアクセスまたはログインが可能でしょうか?

はい

プラットフォーム設定

デスクトップ

サイト URL: https://fixed.org.au/

アカウント不要

  1. The 'what you've done to your bike today' thread - #10218 by jaseyjase - Post your ride - FOA にアクセス
  2. インスタグラムの投稿がページに埋め込まれています。サイトは Discourse フォーラムソフトウェア(https://discourse.org/)で動作しています。

Oembed 読み取り

この権限または機能の使用方法について教えてください

Discourse(https://discourse.org/)は、コミュニティ投稿にインスタグラムや Facebook の投稿を埋め込むことができます。これにより、コンテンツをリッチに埋め込みながら、ユーザーを当社のウェブサイトに留めておくことができます。

Oembed URL

The 'what you've done to your bike today' thread - #10218 by jaseyjase - Post your ride - FOA

再提出しました(Oembed URL に余計なテキストが含まれていました)。承認されました!!! :smiley: 2 つ目のアプリの承認を待っています…

「いいね!」 3

提出された初期のレビューと表示内容は同じようですが、失敗したレビューと比較して、どのような追加情報を提供されたのか詳しくお聞かせください。

また、FB ログインデータをフォーラムに渡したかどうかお答えいただけますか。

「いいね!」 1

@znedw 私の質問は依然として有効です。もしよろしければ、これについて皆様に洞察を提供していただけませんか?

最初のレビューが失敗したのは、Oembed URL フィールドに余分なテキストが含まれていたためです。フォームは送信時にスペースを削除するため、URL が機能しませんでした……これが試行間の唯一の違いです。

いいえ、「プラットフォーム」セクション(ウィザードでプラットフォームを追加する必要がありました)では、単に以下と記載しました。

アカウントは不要

Facebook のレビューのためだけに Discourse アカウントを設定したくなかったので、当フォーラムで公開されている投稿を探し、Instagram の画像が埋め込まれたものを見つけました。これで統合の機能が十分示せると思ったのです。Facebook が Discourse のソースを読み取って自分で解決してくれるかもしれませんね :man_shrugging:

見落としていたようで申し訳ありません。フォーラムには実際に変更を加えず、上記のように Instagram の画像が埋め込まれたフォーラム投稿を見つけ、その後 Facebook のアプリレビューウィザードを進めました。

「いいね!」 3

@znedw さん、こんにちは。あなたのガイドに従ったところ、24 時間後にアプリの審査が承認されました。

ただし、フォームがドメイン内のトピックへのリンクをそのフィールドで受け付けなかったため、埋め込み Instagram ポストへの直接リンクを oEmbed-URL フィールドに入力する必要がありました。もしかしたら、その部分が変更されたのかもしれません。

それ以外は、あなたの表現をそのまま正確に従いました。そして、うまくいきました。

「いいね!」 1

簡単な質問ですが、プロセスは「Instagram Basic Display」に変更されたのでしょうか、それとも私が見落としているだけでしょうか?oEmbedオプションが見当たらないため、定義上最も近いのはInstagram Basic Displayだと推測しています。

引用:

Instagram Basic Displayを使用すると、アプリはInstagram Basic Display APIにアクセスでき、アプリユーザーのInstagramアカウントの基本的なデータへの読み取り専用アクセスを提供します。

このタブを使用して、APIの認証ウィンドウを設定し、ユーザーから権限を取得できるようにします。また、アプリをApp Reviewに提出して、Live Modeに切り替える準備ができたときに提出します。

Basic Displayは認証ツールではないことに注意してください。APIから返されたデータは、アプリユーザーの認証やアプリへのログインに使用することはできません。アプリがユーザー認証にAPIデータを使用する場合、App Review中に却下されます。認証ソリューションが必要な場合は、代わりにFacebook Loginを使用してください。

ただし、ここには記載されていない他のURLが必要になります。例えば:

Client OAuth Setting

Deauthorize Callback URL


(また、何かが変更されたため、ここで機能していないのかもしれません。)

https://www.instagram.com/p/CIRhYzFM7Lu

「いいね!」 3

私の知る限りでは、まだ oEmbed readadvanced access です。

「いいね!」 1

なるほど。チュートリアルとは違うのですね。

ダッシュボードの「製品」と呼ばれる他の機能と同様に追加するのではなく、現在は「アプリレビュー」メニューの「リクエスト」セクションからリクエストするようになっています。機能を選択してレビューに提出します。

これにより、プロセスが一種の抜け穴のようになります。承認のために有効なoEmbedリンクをリクエストしますが、機能が承認されていないため機能しません… :sweat:

「いいね!」 4

アカウントで動作するようになりました。必要なものを要約してみます。私は特に技術に詳しくないので、多くの質問に答えられるか分かりませんが、すべてが機能することを確認するために、設定をできるだけ正確にコピーすればよいと思います。

Facebookログイン(Instagram Graph APIが実際に必要かどうかは分かりません)の両方が必要です。DiscourseのインストールでFacebookログインが機能することを確認してください。

Facebookログイン設定:

基本設定:

詳細設定:

「いいね!」 3

皆さん、こんにちは。本日より、@Iceman の説明は正確であることをお知らせします。

ページレイアウトの一部はガイド(:point_up:)から変更されていますが、主な違いは、oEmbed はアプリがアプリレビューを通過した 後に リクエストする必要があるということです。

「アプリレビュー」メニューからリクエストできます。

私のアプリはアプリレビューを通過していませんが、@undasein は、このガイドと https://stackoverflow.com/questions/67998234/starting-using-instagram-oembed-feature からのアドバイスの助けを借りて、最近それを機能させることができました。


皆さんの「グラム」の共有がうまくいくことを願っています! :slight_smile:

「いいね!」 3

私のリクエストは、特に凝ったものではありませんでした。「Instagramの投稿をフォーラムに埋め込みたい」と書いただけですが、1日で承認されました。

「いいね!」 1

高度なoembed読み取りにアクセスするにはどうすればよいですか?ボタンが無効になっているため、リクエストすることさえできません。APIでグラフを操作しましたが、24時間経っても何も起こりません。

一部のユーザーは、別の理由(Facebookログインなど)でアプリを審査に提出することで回避し、承認されると「Oembed Read」などの機能がリクエストできるようになるという状況を回避しています。

アカウントで何が起こっているのかを理解するために、プラットフォームのサポートチャネルに問い合わせることをお勧めします。:+1:

「いいね!」 1

[quote=“Jamie Wilson, post:1, topic:223548, username:jamie.wilson”]noEmbed
[/quote]

oEmbed はもう存在しません。代わりに何を入れるべきですか?

[quote=“Iceman, post:10, topic:223548, username:Iceman”]Instagram Basic Display
[/quote]

oEmbed オプションが見当たりません。どちらを選びましたか?

@danielabc、あなたのアプリはすでにアプリレビューに合格しましたか?

「いいね!」 1

オプションに移動すると、ボタンがオフになっており、クリックできません。

オプションに移動すると、ボタンがオフになっており、クリックできません。

90日間使用されなかったため、アクセスが取り消されました。つまり、私のフォーラムの誰も最近Instagramリンクを投稿しなかったということだと思います。

そのため、oEmbed読み取り権限の現在のステータスは次のとおりです。

この権限への高度なアクセスをリクエストするには、API呼び出しを成功させる必要があります。このボタンがアクティブになるまで、最初のAPI呼び出しから最大24時間かかる場合があります。テストについて学ぶ

このコンテキストで、Discourseを使用して再度高度なアクセスをリクエストするには、実際にはどのようにAPI呼び出しを行いますか? :thinking:

「いいね!」 2