Получить все Instagram с помощью встроенного модуля Facebook

#facebook-graph-api #instagram-api #oembed

#facebook-graph-api #instagram-api #встроенный модуль

Вопрос:

Я следовал руководству здесь https://developers.facebook.com/docs/plugins/oembed / и это работает.

Мой вопрос в том, как я могу динамически получать URL-адреса своих сообщений? таким образом, я могу повторно использовать эту конечную точку для количества сообщений, которые у меня есть

https://graph.facebook.com/v8.0/instagram_oembed?url ={postUrl}amp;access_token={access_token}

В документах показано, что URL-адрес жестко закодирован в URL-адрес конечной точки, что кажется избыточным

Комментарии:

1. Это не только кажется излишним, но если мне нужно знать все URL-адреса сообщений, я могу вставлять их вручную, что на данный момент является тем же самым. Я также ищу что-то, что можно использовать встроенным модулем для извлечения сообщений по пользователю или тегу или что-то действительно

Ответ №1:

В настоящее время нет способа получить все URL-адреса сообщений для профиля Instagram с помощью oEmbed API на основе документации (или где-либо еще в Интернете). Вам нужно будет получить все короткие коды (ссылки) для публикации с помощью:

  1. Выполните запрос GET на https://www.instagram.com/{profile_handle}/?__a=1 . В наши дни существует очень строгое ограничение скорости, поэтому настоятельно рекомендуется кэшировать результаты в первый раз, возможно, с помощью локального хранилища.
  2. Результатом будет объект JSON со всей информацией профиля, если профиль является общедоступным. Вы можете проверить, является ли профиль запросов общедоступным, проверив [data].graphql.user.is_private
  3. Для каждого [data].graphql.user.edge_owner_to_timeline_media.edges.node получите shortcode свойство.
  4. Наконец, создайте свой динамический URI для публикации https://www.instagram.com/p/{shortcode} .

В качестве альтернативы вы можете выполнить запрос GET для `https://www.instagram.com /{profile_handle} и используйте регулярное выражение, чтобы получить аналогичный объект JSON, содержащий данные профиля в HTML-ответе, например:

 const uri = `https://www.instagram.com/${handle}/`;
const instaRes = await axios.get(uri);
const html = instaRes.data;
const regex = /_sharedData = (.*);</script>/m;
const json = JSON.parse(regex.exec(html)[1]);
  

Ограничение скорости здесь тоже строгое, поэтому используйте обязательно кэширование. Тестирование может быть болезненным, потому что вам, возможно, придется пару раз менять свой IP-адрес, когда вы достигнете предела скорости.