Настройка токена приложения для Instagram oneboxes

:warning: Важные обновления с момента написания этого руководства:

  1. Теперь требуется проверка приложения. С сентября 2021 года Meta требует, чтобы ваше приложение прошло проверку приложения и было одобрено для разрешения oEmbed Read (теперь называемого Meta oEmbed Read для приложений, созданных после 8 апреля 2025 года). Без этого вызовы API oEmbed не будут работать. См. руководство Meta по подаче заявки на проверку приложения для советов по получению одобрения.

  2. Onebox для Instagram может отображаться некорректно. По состоянию на 3 ноября 2025 года Meta удалила поля thumbnail_url, thumbnail_width, thumbnail_height и author_name из ответов Instagram oEmbed. Код onebox для Instagram в Discourse в настоящее время зависит от этих полей (lib/onebox/engine/instagram_onebox.rb), что может привести к неработающим или пустым вставкам.

  3. Поддерживаются только URL-адреса постов и IGTV. В настоящее время Discourse поддерживает создание onebox только для URL-адресов Instagram /p/ (пост) и /tv/ (IGTV). URL-адреса Reels (/reel/) не поддерживаются.

  4. Интерфейс консоли разработчика Facebook значительно изменился с момента создания скриншотов ниже в декабре 2020 года. Общие шаги остаются похожими, но точные экраны и параметры могут выглядеть иначе.


Если у вас уже есть приложение Facebook, связанное с вашим сайтом Discourse, прокрутите страницу вниз до раздела Добавление oEmbed в ваше приложение Facebook.

Если у вас нет учетной записи разработчика Facebook и приложения Facebook:

Перейдите на https://developers.facebook.com/. Если вы не вошли в систему, вам будет предложено войти в свою учетную запись Facebook. Вас могут попросить «преобразовать» вашу учетную запись Facebook в учетную запись разработчика, если вы этого еще не сделали. Вас могут попросить подтвердить свою учетную запись Facebook, добавив номер телефона или выполнив другие действия. Вам нужно просто следовать инструкциям и делать то, что требует Facebook.

После создания учетной записи разработчика Facebook нажмите «Мои приложения» на домашней странице разработчика Facebook:

…и «Создать приложение»:

Выберите тип приложения «Что-то другое» и нажмите «Продолжить»:

Введите «Отображаемое имя приложения» и «Контактный email приложения». После прочтения их Условий использования и Политики конфиденциальности вы можете нажать «Создать приложение»:

Если вы робот: здесь нечего смотреть. Бип боп буп. :robot:

Если вы не робот: нажмите «Я не робот», следуйте инструкциям и нажмите «Отправить».

Поздравляем! У вас есть приложение Facebook!

Добавление oEmbed в ваше приложение Facebook:

Прокрутите список продуктов вниз, найдите «oEmbed» и нажмите «Настроить»:

Если вы согласны с тем, как вы будете использовать продукт oEmbed, установите флажок, а затем нажмите «Подтвердить»:

Продукт oEmbed добавлен. Нажмите «Настройки»:

«Отображаемое имя» и «Контактный email» уже должны быть заполнены. Вам нужно будет ввести URL-адреса для вашей «Политики конфиденциальности» и «Условий использования». Выберите «Категорию» из списка доступных параметров. Нажмите «Сохранить изменения», когда будете довольны всем:

Переключите переключатель в верхней части экрана, чтобы изменить режим с «В разработке» на «В эфире»:

Нажмите «Переключить режим»:

Отправьте свое приложение на проверку (требуется с 2021 года):

Прежде чем ваше приложение сможет получить доступ к API oEmbed в рабочей среде, вы должны отправить его на проверку приложения и запросить разрешение oEmbed Read (или Meta oEmbed Read для приложений, созданных после 8 апреля 2025 года).

  1. В панели управления вашим приложением перейдите в раздел Проверка приложенияРазрешения и функции.
  2. Найдите oEmbed Read (или Meta oEmbed Read) и нажмите Запросить.
  3. Возможно, вам сначала нужно будет выполнить успешный тестовый вызов API, прежде чем кнопка запроса станет активной. Это может занять до 24 часов после вашего первого вызова API.
  4. При отправке укажите URL-адрес на вашем сайте Discourse, содержащий вставку Instagram, и объясните, что ваш сайт использует программное обеспечение форума Discourse для вставки постов Instagram с помощью API oEmbed.

См. документацию Meta по oEmbed для подробных инструкций по подаче заявки.

Сгенерируйте токен доступа вашего приложения:

Сделав все это, мы можем сгенерировать токен приложения, следуя инструкциям Facebook по токенам доступа приложения. Вам понадобятся значения полей «ID приложения» и «Секрет приложения». Чтобы получить секрет приложения, нажмите «Показать». Вас могут попросить повторно пройти аутентификацию или выполнить аналогичные действия, но в итоге вы получите длинное шестнадцатеричное значение, которое можно скопировать:

Согласно документации 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"

Альтернативно, копирование только 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. Найдите настройку сайта с именем facebook_app_access_token в настройках Onebox. Вставьте значение access_token в это поле:

Нажмите :white_check_mark: …и готово!

Вставка URL-адреса, такого как https://www.instagram.com/p/CIRhYzFM7Lu/, в сообщение на вашем сайте должна привести к появлению красивого onebox, точно так же, как этот:

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

17 лайков

Новая функция чтения oEmbed и требования к проверке приложений

Сегодня, 8 июня 2021 года, мы объявили о выпуске v11.0 Graph API и Marketing API. С этим обновлением появились новые требования для доступа к API oEmbed . Некоторые из ваших приложений в настоящее время используют API oEmbed и могут быть затронуты этими изменениями.

Чтобы продолжить доступ к API oEmbed, вам необходимо представить свои приложения на проверку до 6 сентября 2021 года. Если вы хотите запросить новый доступ к API oEmbed, вам также необходимо представить свои приложение(я) на проверку.

Для получения дополнительной информации ознакомьтесь с обновлёнными требованиями. Если ваши приложения не будут проверены на наличие функции API oEmbed до 6 сентября 2021 года, они потеряют доступ к этой функции. Чтобы избежать прерывания доступа ваших приложений к 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. Пост из Instagram встроен на страницу. Сайт работает на программном обеспечении форума Discourse (https://discourse.org/)

Oembed Read

Расскажите, как вы используете это разрешение или функцию

Discourse (https://discourse.org/) может встраивать посты из Instagram и Facebook в сообщения сообщества, что позволяет удерживать пользователей на нашем сайте, предоставляя богатый контент.

URL для Oembed

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

Я только что повторно отправил (в URL Oembed был лишний текст), и это было одобрено!!! :smiley: жду одобрения моего второго приложения…

3 лайка

Текст выглядит так же, как в вашей первоначальной отправке на проверку. Не могли бы вы уточнить, какую дополнительную информацию вы предоставили по сравнению с неудачной проверкой?

Кроме того: передавали ли вы данные для входа в Facebook на форум или нет?

1 лайк

@znedw мой вопрос по-прежнему актуален, если вы можете помочь всем, поделившись своими мыслями по этому поводу?

Первая проверка не прошла, потому что в поле Oembed URL я добавил лишний текст, а форма удаляет пробелы при отправке, поэтому URL не работал… Это единственное различие между попытками.

Нет, в разделе «Платформа» (мне пришлось добавить платформу в мастере) я просто написал:

Аккаунт не требуется

Я не хотел специально создавать учётную запись на Discourse только для проверки в Facebook, поэтому нашёл на нашем форуме публичный пост с встроенным изображением из 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, чтобы получать от пользователей разрешения, а также для отправки вашего приложения на проверку приложения, когда вы будете готовы перевести его в режим «Live Mode».

Обратите внимание, что Basic Display не является инструментом аутентификации. Данные, возвращаемые API, нельзя использовать для аутентификации пользователей вашего приложения или входа в него. Если ваше приложение использует данные API для аутентификации пользователей, оно будет отклонено в ходе проверки приложения. Если вам нужно решение для аутентификации, используйте Facebook Login вместо этого.

Однако для этого требуются другие URL-адреса, которые здесь не указаны, поэтому я не уверен, например:

Настройка OAuth клиента

URL-адрес обратного вызова для отмены авторизации


(Также возможно, что что-то изменилось, потому что, кажется, это не работает здесь?)

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

3 лайка

Насколько я могу судить, это всё ещё oEmbed read с расширенным доступом

1 лайк

Понятно. Значит, здесь есть отличие от руководства.

Вместо того чтобы добавлять функцию как любую другую (в интерфейсе она называется «Продукты») через панель управления, теперь запрос на неё подаётся в разделе «Запрос» меню «Проверка приложения». Вы выбираете функцию и отправляете её на проверку.

Это создаёт своего рода замкнутый круг: они просят предоставить ссылку с рабочим oEmbed для утверждения, но это не срабатывает, поскольку функция ещё не одобрена… :sweat:

4 лайка

У меня это теперь работает на моей учётной записи. Я постараюсь обобщить то, что вам нужно. Я не особо разбираюсь в технике, поэтому не уверен, что смогу ответить на многие вопросы, но полагаю, достаточно просто скопировать мои настройки как можно точнее, чтобы проверить, всё ли работает.

Вам нужен вход через Facebook (не знаю, действительно ли требуется Instagram Graph API). Проверьте, работает ли вход через Facebook в вашей установке Discourse

Настройки входа через Facebook:

Основные настройки:

Расширенные настройки:

3 лайка

Всем привет! Хотел сообщить, что на сегодняшний день описание от @Iceman остаётся актуальным.

Некоторые макеты страниц были изменены по сравнению с руководством (:point_up:), но главное отличие в том, что oEmbed необходимо запрашивать после того, как ваше приложение прошло проверку App Review.

В меню «App Review» вы можете отправлять запросы:

Мое приложение ещё не прошло проверку App Review, но @undasein смог недавно заставить его работать с помощью этого руководства и советов с https://stackoverflow.com/questions/67998234/starting-using-instagram-oembed-feature.


Удачи в публикации ваших `grams, друзья! :slight_smile:

3 лайка

В своем запросе я не прибегал к каким-либо ухищрениям. Я просто написал: «Хочу встраивать посты из Instagram на свой форум», и он был одобрен за один день.

1 лайк

Как я могу получить доступ к расширенному чтению oEmbed? Я даже не могу запросить его, так как кнопка отключена. Я пробовал использовать API Graph, но ничего не происходит, даже после ожидания 24 часов.

Некоторые пользователи обходили это ограничение, подавая заявку на рассмотрение приложения по другой причине (например, для входа через Facebook). После одобрения некоторые функции становятся доступными для запроса, например «Oembed Read».

Возможно, стоит обратиться в каналы поддержки платформы, чтобы узнать, что происходит с вашей учётной записью. :+1:

1 лайк

oEmbed больше не существует, что мне использовать вместо него?

Я не вижу опцию Oembed, что именно вы выбрали?

Ваше приложение уже прошло проверку (App Review), @danielabc?

1 лайк

Когда я захожу в настройки, кнопка выключена, и я не могу на неё нажать.

Когда я захожу в настройки, кнопка выключена, и я не могу на неё нажать.

Мой доступ был отозван, потому что он не использовался в течение 90 дней. Это, по-моему, означает, что на моём форуме никто недавно не публиковал ссылки на Instagram.

Итак, вот текущий статус разрешения oEmbed Read:

Чтобы запросить расширенный доступ к этому разрешению, необходимо выполнить успешный тестовый вызов API. Кнопка может стать активной в течение 24 часов после первого вызова API. Узнать о тестировании

Как на практике выполнить вызов API с помощью Discourse в данном контексте, чтобы снова запросить расширенный доступ? :thinking:

2 лайка