Axios API Twitter请求不返回用户推文

时间:2017-01-09 19:57:13

标签: javascript api reactjs twitter axios

我正在尝试拨打Twitters API并获取我的推文,以便将其发布到我正在创建的网站上。

当我运行以下代码时,我收到错误。

  

XMLHttpRequest无法加载https://api.twitter.com/1.1/search/tweets.json?q=%SamSchaeferSays。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:3333”访问。响应有HTTP状态代码400.“和”bundle.js:30041未捕获(在承诺中)错误:网络错误。

我不熟悉不使用PHP的API调用 - 不知道我在这里做错了什么。

const tweet = 'https://api.twitter.com/1.1/search/tweets.json?q=%SamSchaeferSays';
function getUserTweet() {
    return axios.get(`${tweet}`).then(function(response){
        console.log(response.data)
        console.log(response.status)
    });
}

示例OAuth字符串

const DST = `OAuth oauth_consumer_key="${consumerKey}",
oauth_nonce="${}", 
oauth_signature="${}", 
oauth_signature_method="${}", 
oauth_timestamp="${}", 
oauth_token="${}", 
oauth_version="1.0"
 `;

1 个答案:

答案 0 :(得分:-1)

400 Bad Request错误表示服务器无法理解您的请求。在您的情况下,有一个拼写错误,阻止请求通过(额外%)。试试这个:

const tweet = 'https://api.twitter.com/1.1/search/tweets.json?q=SamSchaeferSays';
function getUserTweet() {
    return axios.get(`${tweet}`, { headers: { 'Authorization': 'YOUR_OAUTH_HEADER' } }).then(function(response){
        console.log(response.data)
        console.log(response.status)
    });
}

这将解决400 Bad Request错误,但您还不会收到任何数据。 Twitter API要求您授权您的请求。在their documentation中了解更多信息。

  

为了允许应用程序提供此信息,Twitter的API依赖于OAuth 1.0a协议。在非常简化的层面上,Twitter的实现要求需要授权的请求包含额外的HTTP授权标头,其中包含足够的信息来回答上面列出的问题。上面显示的HTTP请求的一个版本,修改为包含此标题,看起来像这样(通常Authorization标头需要在一行上,但在这里已经包装了易读性):