Axios请求不提取推文

时间:2017-05-25 16:04:18

标签: javascript reactjs twitter twitter-oauth

我正在尝试创建一个使用ReactJS制作的小型网络应用程序,我正在尝试使用Twitter API获取推文但是当我执行我的代码时,我收到此错误:

enter image description here

我正在使用Axios进行HTTP请求,这是我的api.js文件。

import axios from 'axios';

module.exports = {
  fetchTweets: (language) => {
      var config = {
        headers: {
          'Authorization': 'OAuth oauth_consumer_key="consumer_key",oauth_token="token",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1495723125",oauth_nonce="nonce",oauth_version="1.0",oauth_signature="signature"',
        }
      };

     var encodedURI = window.encodeURI('https://api.twitter.com/1.1/search/tweets.json?q='+ language +'&result_type=recent');

     return axios.get(encodedURI,config)
     .then(function(response){
        console.log(response)
    });
  }
}

推文组件

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import api from '../utils/api';

const SelectedLanguage = (props) =>{
  var languages = ['react', 'node'];

  return (
    <ul className="languages">
      {languages.map((lang, index) => {
        return (
          <li
            style   = { lang === props.selectedKeyword ? { color: '#d0021b'} : null }
            onClick = { () => props.onSelect(lang) }
            key     = { index }>
            {lang}
          </li>
        )
      })}
    </ul>
  )
}

SelectedLanguage.propTypes = {
  selectedKeyword: PropTypes.string.isRequired,
  onSelect: PropTypes.func.isRequired,
}

class ReactTweets extends Component {
  constructor(props){
    super(props);
    this.state = {
      selectedKeyword: 'react',
      tweets: null
    }
    this.updateLanguage = this.updateLanguage.bind(this);
  }

  componentDidMount() {
    this.updateLanguage(this.state.selectedKeyword);
  }

  updateLanguage(lang){
    this.setState(function() {
      return {
        selectedKeyword: lang,
        tweets: null,
      }
    });
    api.fetchTweets(lang)
      .then(tweets => {
        console.log(tweets);
      });
  }

  render() {
    return (
      <div>
        <SelectedLanguage
          selectedKeyword={this.state.selectedKeyword}
          onSelect={this.updateLanguage}
        />
      </div>
    );
  }
}

export default ReactTweets;

我真的很感谢你的帮助:) 感谢

1 个答案:

答案 0 :(得分:0)

由于 CORS ,您永远无法实现此功能。您需要通过启用了CORS的服务器从Twitter获取数据,而这纯粹是通过前端应用程序实现的。只有当您尝试从中获取数据的服务器允许此类请求时,这才有效。