【问题标题】:Searching for twitter users using javascript and axios使用 javascript 和 axios 搜索 twitter 用户
【发布时间】:2020-12-18 22:04:32
【问题描述】:

我正在尝试连接到 twitter api,以便使用用户名搜索用户。我已经阅读了以下文档,但仍然不确定我是否正确地做事:

https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username

代码如下:

Axios 实例:

import axios from 'axios';

export default axios.create({
    baseURL:"https://api.twitter.com/2/",
    header: {"Authorization": "Bearer $mybearertoken"}
});

获取请求

export const searchForUser =(searchTerm)=> async (dispatch) => {

    const response = await twitter.get(`by/username/:${searchTerm}/TwitterDev?user.fields=profile_image_url,name`)

    dispatch({type:SEARCH_FOR_USER,payload:response.data})
};

我对 javascript 很陌生,并且使用 API,所以我有很多问题:

  • 文档使用 curl 请求。我对 curl 请求的理解有限,是否可以使用 nodejs 和 axios 执行相同的操作?
  • 我是否正确定义了我的 axios 实例(例如定义标头)?
  • 如果上面的答案是肯定的,我哪里错了?

我的控制台中也出现此错误“访问 XMLHttpRequest at 'https://api.twitter.com/2/by/username/:j/TwitterDev?user.fields=profile_image_url,name' from origin' http://localhost:3000' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。”

HTTP 错误代码是 400

【问题讨论】:

  • CURL 是向 Twitter API(和其他互联网主机)发出 HTTP 请求的众多方法之一。
  • 看起来没问题,只要您将该 axios 实例导入为 twitter ?你怎么打电话给searchForUser?由于异步,它也会返回一个 Promise。你得到什么回应?
  • 您是否真的在调用 axios.create 之前设置了您的不记名令牌?
  • 我在 $.我也试过没有 $ 也没有工作。我今天创建了 twitter 开发者帐户,但看到我获得了令牌,我想它应该可以立即使用?

标签: javascript curl twitter get axios


【解决方案1】:

看起来您的服务器不包含响应预检请求 (OPTIONS) 的 Access-Control-Allow-Origin 标头。

如果缺少 Access-Control-Allow-Origin,CORS 请求将失败。如果遇到 CORS 错误,我建议您使用 Node.js 进行 API 调用。

这里有一些很棒的文章解释了 CORS 的工作原理:

https://www.html5rocks.com/en/tutorials/cors/ https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS

【讨论】:

    猜你喜欢
    • 2014-11-23
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2017-10-03
    • 2017-01-23
    相关资源
    最近更新 更多