javascript - 我可以在客户端使用Fetch调用Twitter API吗?

标签 javascript reactjs twitter fetch-api twitter-oauth

我尝试在 React 应用程序中调用 Twitter API 并收到以下错误

Fetch API cannot load https://api.twitter.com/1.1/account/verify_credentials.json. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 400. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

我知道Access-Control-Allow-Origin是什么意思。我想我遵循了 Twitter API 的所有步骤( Authorizing a requestCreating a signature ),但也许我忽略了代码中的某些内容。

此外,我在 API 文档中没有找到任何说明我必须使用服务器来调用他们的 API 的内容,但也许我错过了一些东西。

下面是获取用户信息的函数文字fetchUser

export const fetchUser = async () => {
  const oauths = {...OAUTHS, oauth_nonce: generateNonce(), oauth_timestamp: Math.floor(Date.now() / 1000)};
  const oauthKeys = Object.keys(oauths);
  const oauthValues = Object.values(oauths);
  const baseUrl = `${ROOT_API_URL}verify_credentials.json`;
  const signature = generateOauthSignature(
    oauths,
    HTTP_GET,
    baseUrl,
    CONSUMER_SECRET,
    OAUTH_SECRET
  );

  const response = await fetch(baseUrl, {
    method: `${HTTP_GET}`,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Authorization': `OAuth ${oauthKeys[0]}="${oauthValues[0]}",${oauthKeys[1]}="${oauthValues[1]}",oauth_signature="${signature}",${oauthKeys[2]}="${oauthValues[2]}",${oauthKeys[3]}="${oauthValues[3]}",${oauthKeys[4]}="${oauthValues[4]}",${oauthKeys[5]}="${oauthValues[5]}"`,
    }
  });
  const body = await response.json();

  if (response.status !== 200) 
    throw Error(body.message);

  return body;
}

Take a look at the entire code I am using (CodePen)

最佳答案

我必须创建一个 Node 服务器来调用 API,没什么大不了的

关于javascript - 我可以在客户端使用Fetch调用Twitter API吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45393356/

相关文章:

javascript - 使用 ES6 原型(prototype)方法 map 在 React 中不渲染任何内容

reactjs - react 导航标题随屏幕变化

javascript - 如何使用codebird.js 搜索twitter API 来匹配用户?

python - 使用 python 3 的 Twitter 流 API

javascript - 换行符不会显示在 IE 中的文本区域中

javascript - amChart 和 React js(版本 15)(es6)

javascript - 访问 jquery 注释器注释

javascript - Tizen gear 2 网络请求

reactjs - 如何在 Ant Design Form 中使用异步 onFinish 方法

json - 跨域json响应失败