【问题标题】:Getting tweets with React使用 React 获取推文
【发布时间】:2018-06-24 05:29:48
【问题描述】:

我正在使用 Twit 包来提取推文。我不断收到错误 400,并且

无法加载https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterdev&count=10:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:3000' 不允许访问。响应的 HTTP 状态代码为 400。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

大部分内容都可以与 vanillajs 一起使用,但是一旦我导入 React,我就会遇到这些错误。我该如何解决?为了安全起见,我已取出 API 密钥。

import React, { Component } from 'react';
import Twit from 'twit';

export default class Twitter extends Component {

  componentDidMount() {
    const T = new Twit({
      consumer_key:         '...',
      consumer_secret:      '...',
      access_token:         '...',
      access_token_secret:  '...'
    })

    let params = {
      screen_name: 'twitterdev',
      count: 10
    };

    function getData(err, data, response) {
      let tweet = data;

      for (var i = 0; i<tweet.length; i++) { 
        console.log(tweet[i].text); 
        console.log();
       }
    }

    T.get('statuses/user_timeline', params, getData);
  }

  render() {
    return(
      <div></div>
    )
  }
}

【问题讨论】:

    标签: javascript node.js reactjs twitter npm


    【解决方案1】:

    Twitter API does not 支持 CORS 请求。这就是你想要做的。从不同的域访问 API。您必须在本地服务器上创建一个定制的 url,将请求代理到 Twitter API。

    【讨论】:

    • 我该怎么做呢?我是否必须在实时服务器上托管项目才能进行测试?我尝试在 127.0.0.1:3000 上进行测试,并将 apps.twitter 上的网站更改为 127.0.0.1:3000,但这也没有用。
    • 您仍然可以在本地进行。我看到您使用的是本地服务器。你在控制它吗?
    • 该应用程序正在通过 react 的样板运行,通过 npm start
    • 我明白了,所以在这种情况下,我猜你必须使用“纱线弹出”并弄乱代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2020-09-07
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多