微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Facebook Oembed获取所有Instagram帖子

如何解决使用Facebook Oembed获取所有Instagram帖子

我已经按照https://developers.facebook.com/docs/plugins/oembed/的指南进行操作了。

我的问题是,如何动态获取我的帖子网址?所以我可以重复使用此端点作为我的帖子数量

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

文档显示方法是将URL硬编码到端点url中,这似乎是多余的

解决方法

目前无法根据文档(或网络上的任何其他地方)使用 oEmbed API 获取 Instagram 个人资料的所有帖子 URL。您必须通过以下方式获取所有帖子短代码(链接):

  1. https://www.instagram.com/{profile_handle}/?__a=1 发出 GET 请求。这些天有一个非常严格的速率限制,因此强烈建议第一次缓存结果,可能使用本地存储。
  2. 如果配置文件是公开的,结果将是一个包含所有配置文件信息的 JSON 对象。您可以通过检查 [data].graphql.user.is_private
  3. 来检查请求配置文件是否公开
  4. 对于每个 [data].graphql.user.edge_owner_to_timeline_media.edges.node,获取 shortcode 属性。
  5. 最后,创建您的动态帖子 URI https://www.instagram.com/p/{shortcode}

或者,您可以向 `https://www.instagram.com/{profile_handle} 发出 GET 请求,并使用正则表达式在 HTML 响应中获取包含配置文件数据的类似 JSON 对象,如下所示:

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 地址。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。