【问题标题】:AXIOS GET request to instagram not working in prodAXIOS GET 对 instagram 的请求在产品中不起作用
【发布时间】:2021-08-04 22:13:35
【问题描述】:

我被困了几个小时,找不到答案。

这是一个非常简单的请求,在浏览器中运行良好(它返回一个 JSON 答案),例如: https://www.instagram.com/eurosportfr/channel/?__a=1

在开发代码中:

const express = require('express');
const axios = require('axios');
const cors = require('cors');

const app = express();

app.use(cors());

app.get('/instagram', (req, res) => {
 
  async function getInstagramFeed() {
    await axios
      .get('https://www.instagram.com/eurosportfr/?__a=1')
      .then((response) => {
        console.log(response);
        res.write(`${JSON.stringify(response.data)}`);
        res.end();
      })
      .catch((err) => {
        console.log(err.response);
        res.write('<h1>ERROR GRAVE</h1>');
        res.write(err.response);
        res.end();
      });
  }

  getInstagramFeed();
});

const PORT = process.env.PORT || 8000;
app.listen(PORT, () => console.log(`listening on ${PORT}`));

DEV ENV 中的结果是 JSON 数据,包含我需要的所有内容。

但在生产中,它不会返回 JSON。相反,它返回给我一个 HTML 页面...

您可以在这里尝试:(我在正文中显示结果) https://corsmiddleware.vercel.app/instagram

当我用另一个 API 客户端尝试另一个 api 请求时,它在 prod 中工作得很好,例如: https://corsmiddleware.vercel.app/test

有什么想法吗??

谢谢

【问题讨论】:

  • 我认为在开发模式下,您已登录 instagram,而在 prod 环境中您则没有。您可以通过粘贴您在浏览器中提供的 url 来测试它(隐身模式)。您将获得与生产返回相同的登录页面
  • 你好 Mic Fung,谢谢你的回复。即使我没有登录,即使在隐身模式下,我也尝试过,它在本地主机上工作得很好,但在生产中却没有......我注意到在本地获取 JSON 之前,它还会显示半秒钟的 html 结果。
  • 我读过这个 SO stackoverflow.com/questions/62016243/… 可能与地理位置有关。对我来说,需要登录才能使您的链接正常工作。看看您是否可以将您的服务器位置更改为您所在的位置或在法国,以摆脱登录问题。
  • 感谢您的回复,它帮助我理解了这个问题,我将对我的问题做出全球性的回答。

标签: express axios instagram vercel


【解决方案1】:

此请求现在需要身份验证。它过去有效,现在在我所在的摩洛哥仍然有效,但这种解决方案并不可靠。

解决方案是按照 facebook 上的说明进行操作: https://developers.facebook.com/docs/instagram-basic-display-api/

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 2018-12-25
    • 2018-05-15
    • 1970-01-01
    • 2018-12-28
    相关资源
    最近更新 更多