我正在尝试创建一个使用ReactJS制作的小型网络应用程序,我正在尝试使用Twitter API获取推文但是当我执行我的代码时,我收到此错误:
我正在使用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;
我真的很感谢你的帮助:) 感谢
答案 0 :(得分:0)
由于 CORS ,您永远无法实现此功能。您需要通过启用了CORS的服务器从Twitter获取数据,而这纯粹是通过前端应用程序实现的。只有当您尝试从中获取数据的服务器允许此类请求时,这才有效。