自本指南最初撰写以来所做的重要更新:
-
现已要求应用审核 (App Review)。 自 2021 年 9 月起,Meta 要求您的应用通过 App Review 并获得 oEmbed Read 权限的批准(对于 2025 年 4 月 8 日之后创建的应用,现称为 Meta oEmbed Read)。如果没有此权限,oEmbed API 调用将会失败。请参阅 Meta 的 App Review 提交指南 以获取批准方面的提示。
-
Instagram 聚合卡片 (onebox) 可能无法正确渲染。 自 2025 年 11 月 3 日起,Meta 从 Instagram oEmbed 响应中删除了
thumbnail_url、thumbnail_width、thumbnail_height和author_name字段。Discourse 目前的 Instagram onebox 代码依赖于这些字段(lib/onebox/engine/instagram_onebox.rb),这可能导致嵌入内容损坏或为空。 -
仅支持帖子和 IGTV URL。 Discourse 目前仅对 Instagram 的
/p/(帖子) 和/tv/(IGTV) URL 生成 onebox。Reels (/reel/) URL 不受支持。 -
Facebook 开发者控制台的用户界面自下面截图于 2020 年 12 月拍摄以来已发生重大变化。基本步骤仍然相似,但确切的屏幕和选项可能看起来不同。
如果您已经有一个与您的 Discourse 网站关联的 Facebook 应用,请滚动到 向您的 Facebook 应用添加 oEmbed。
如果您没有 Facebook 开发者账户和 Facebook 应用:
访问 https://developers.facebook.com/。如果您尚未登录,系统会提示您登录您的 Facebook 账户。如果您以前没有将您的 Facebook 账户转换为开发者账户,系统可能会要求您“转换”。您可能需要通过添加电话号码或完成其他步骤来用 Facebook 验证您的账户。您只需按照提示操作并完成 Facebook 对您的要求即可。
拥有 Facebook 开发者账户后,从 Facebook 开发者主屏幕点击“我的应用”:
…然后点击“创建应用”:
选择“其他 (Something Else)”作为应用类型,然后点击“继续 (Continue)”:
输入“应用展示名称 (App Display Name)”和“应用联系邮箱 (App Contact Email)”。在阅读完其条款和政策后,您可以点击“创建应用 (Create App)”:
如果您是机器人:这里没什么可看的。哔啵嘟嘟。![]()
如果您不是机器人:点击“我不是机器人 (I’m not a robot)”,按照提示操作,然后点击“提交 (Submit)”。
恭喜!您有了一个 Facebook 应用!
向您的 Facebook 应用添加 oEmbed:
滚动到“产品 (Products)”列表的底部,找到“oEmbed”并点击“设置 (Set Up)”:
如果您同意您将如何使用 oEmbed 产品,请选中复选框,然后点击“确认 (Confirm)”:
oEmbed 产品已添加。点击“设置 (Settings)”:
“展示名称 (Display Name)”和“联系邮箱 (Contact Email)”应该已经填好了。您需要输入您的“隐私政策 (Privacy Policy)”和“服务条款 (Terms of Service)”的 URL。从可用选项列表中选择一个“类别 (Category)”。对所有内容满意后,点击“保存更改 (Save Changes)”:
点击屏幕顶部的切换开关,将模式从“开发中 (In development)”更改为“上线 (Live)”:
点击“切换模式 (Switch Mode)”:
提交您的应用以进行应用审核(自 2021 年起要求):
在您的应用可以访问生产环境中的 oEmbed API 之前,您必须提交它进行应用审核,并请求 oEmbed Read 权限(对于 2025 年 4 月 8 日之后创建的应用,则为 Meta oEmbed Read)。
- 在应用的仪表板中,转到 App Review → Permissions and Features(应用审核 → 权限和功能)。
- 找到 oEmbed Read(或 Meta oEmbed Read)并点击 Request(请求)。
- 您可能需要先成功进行一次测试 API 调用,请求按钮才会变为可操作状态。这可能在您的首次 API 调用后最多需要 24 小时。
- 提交时,请提供一个包含 Instagram 嵌入内容的 Discourse 网站 URL,并解释您的网站使用 Discourse 论坛软件通过 oEmbed API 嵌入 Instagram 帖子。
有关详细的提交指南,请参阅 Meta 的 oEmbed 文档。
生成您的应用访问令牌:
完成所有这些操作后,我们可以按照 Facebook 关于 应用访问令牌 的说明来实际生成应用令牌。您需要“应用 ID (App ID)”字段的值以及“应用密钥 (App Secret)”字段的值。要获取应用密钥,请点击“显示 (Show)”。系统可能要求您重新验证身份或执行类似操作,但最终您应该会得到一个可以复制的长十六进制值:
根据 Facebook 的文档,您需要将这些值发送给 Facebook 以生成令牌。您是否熟悉使用 curl?太棒了!他们建议使用以下命令(将 {your-app-id} 和 {your-app-secret} 替换为您从上面屏幕复制的值)。
curl -X GET "https://graph.facebook.com/oauth/access_token?client_id={your-app-id}\u0026client_secret={your-app-secret}\u0026grant_type=client_credentials"
或者,将仅 URL(替换那两个值后)复制到浏览器中也应该有效:
https://graph.facebook.com/oauth/access_token?client_id={your-app-id}\u0026client_secret={your-app-secret}\u0026grant_type=client_credentials
Facebook 将以一小段 JSON 响应,它应该看起来像下面的示例:
{"access_token":"1234567890654321|c3bd55c09fc5e561552ad7a8717","token_type":"bearer"}
复制您的 access_token 的值,不包括引号(例如,在我的示例中是 1234567890654321|c3bd55c09fc5e561552ad7a8717),然后转到您的 Discourse 网站的设置。在 Onebox 设置中找到名为 facebook_app_access_token 的站点设置。将 access_token 值粘贴到此字段中:
点击
…大功告成!
在您的网站帖子中粘贴一个 URL,例如 https://www.instagram.com/p/CIRhYzFM7Lu/,应该会显示一个漂亮的 onebox,就像这个一样:

























