Instagram api 在本地主机上工作正常,但在服务器上发送错误 (https://www.instagram.com/$name/?__a=1)

Posted

技术标签:

【中文标题】Instagram api 在本地主机上工作正常,但在服务器上发送错误 (https://www.instagram.com/$name/?__a=1)【英文标题】:Instagram api working fine on localhost but sending error on server (https://www.instagram.com/$name/?__a=1)Instagram api 在本地主机上工作正常,但在服务器上发送错误 (https://www.instagram.com/$name/?__a=1) 【发布时间】:2022-01-23 10:57:43 【问题描述】:

我正在尝试获取用户的一些个人资料信息。它在本地主机上工作,但不在服务器上。我没有在本地/我的电脑上登录 instgram 帐户。看起来它正在尝试登录服务器首先。

  let username = req.query.username;
  if (!username) 
    throw "Please enter a username";
        
  let name = username.toLowerCase();

  // console.log("name", name);
  var instagram_url = `https://www.instagram.com/$name/?__a=1`;
  // console.log("url", instagram_url);
  // let response = await axios.get(
  // `https://api.lamadava.com/v1/user/by/username?username=hamimkivines&access_key=$access_key
  // );
  let response = await fetch(instagram_url);
  console.log("response -", response); 
 
  let profile = await response.json();
  // console.log("profile", profile);
  return res.status(200).send(profile); 

  **Local response -**
  [Symbol(Response internals)]: 
    url: 'https://www.instagram.com/hamimkivines/?__a=1',
    status: 200,
    statusText: 'OK',
    headers: Headers  [Symbol(map)]: [Object: null prototype] ,
    counter: 0
  


**Server Response**
0|dev  |   [Symbol(Response internals)]: 
0|dev  |     url: 'https://www.instagram.com/accounts/login/',
0|dev  |     status: 200,
0|dev  |     statusText: 'OK',
0|dev  |     headers: Headers  [Symbol(map)]: [Object: null prototype] ,
0|dev  |     counter: 1
0|dev  |   
0|dev  | 
0|dev  | error FetchError: invalid json response body at https://www.instagram.com/accounts/login/ reason: Unexpected token < in JSON at position 0
0|dev  |     at /var/www/html/everlensv2node/node_modules/node-fetch/lib/index.js:273:32
0|dev  |     at processTicksAndRejections (internal/process/task_queues.js:95:5)
0|dev  |     at async getInstagramProfile (/var/www/html/everlensv2node/modules/user/user.controller.js:188:21) 
0|dev  |   type: 'invalid-json'
0|dev  | 

【问题讨论】:

嘿@Sid,从您共享的代码块中删除您的访问令牌。 【参考方案1】:

这是由于 API 端点正在返回包含 JSON 数据的 HTML 标记。而不是使用response.json()试试

let profile = response.text()
let parsed_json = JSON.parse(profile)

如果这不起作用,您将不得不手动剥离返回的 XML 的封闭标记。

【讨论】:

以上是关于Instagram api 在本地主机上工作正常,但在服务器上发送错误 (https://www.instagram.com/$name/?__a=1)的主要内容,如果未能解决你的问题,请参考以下文章

API调用代码在本地主机上工作但不在服务器上

AWS RDS SQL 数据库在本地主机上工作——从服务器抛出错误

Datatables 插件在本地主机上工作正常,但在服务器(CPanel)上不工作

Dropzone 在本地主机上正常工作,在远程服务器上引发错误

$.post & AJAX 在服务器上不工作,但在本地主机上工作正常

图片上传可以在本地主机上工作,但不能在线