<small id='bR8c3'></small><noframes id='bR8c3'>

    <bdo id='bR8c3'></bdo><ul id='bR8c3'></ul>
  • <i id='bR8c3'><tr id='bR8c3'><dt id='bR8c3'><q id='bR8c3'><span id='bR8c3'><b id='bR8c3'><form id='bR8c3'><ins id='bR8c3'></ins><ul id='bR8c3'></ul><sub id='bR8c3'></sub></form><legend id='bR8c3'></legend><bdo id='bR8c3'><pre id='bR8c3'><center id='bR8c3'></center></pre></bdo></b><th id='bR8c3'></th></span></q></dt></tr></i><div id='bR8c3'><tfoot id='bR8c3'></tfoot><dl id='bR8c3'><fieldset id='bR8c3'></fieldset></dl></div>
    <legend id='bR8c3'><style id='bR8c3'><dir id='bR8c3'><q id='bR8c3'></q></dir></style></legend>

    1. <tfoot id='bR8c3'></tfoot>

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

        Can I call the Twitter API in client using Fetch?(我可以使用 Fetch 在客户端调用 Twitter API 吗?)

            <tbody id='zNocb'></tbody>
          <legend id='zNocb'><style id='zNocb'><dir id='zNocb'><q id='zNocb'></q></dir></style></legend>

              <i id='zNocb'><tr id='zNocb'><dt id='zNocb'><q id='zNocb'><span id='zNocb'><b id='zNocb'><form id='zNocb'><ins id='zNocb'></ins><ul id='zNocb'></ul><sub id='zNocb'></sub></form><legend id='zNocb'></legend><bdo id='zNocb'><pre id='zNocb'><center id='zNocb'></center></pre></bdo></b><th id='zNocb'></th></span></q></dt></tr></i><div id='zNocb'><tfoot id='zNocb'></tfoot><dl id='zNocb'><fieldset id='zNocb'></fieldset></dl></div>
            • <small id='zNocb'></small><noframes id='zNocb'>

                  <bdo id='zNocb'></bdo><ul id='zNocb'></ul>
                • <tfoot id='zNocb'></tfoot>

                  本文介绍了我可以使用 Fetch 在客户端调用 Twitter API 吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

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

                  I am trying to call the Twitter API in a React App and get the following error

                  Fetch API 无法加载https://api.twitter.com/1.1/account/verify_credentials.json.回复预检请求未通过访问控制检查:否请求中存在Access-Control-Allow-Origin"标头资源.因此,来源 'http://localhost:3000' 是不允许的使用权.响应的 HTTP 状态代码为 400.如果响应不透明满足您的需求,将请求的模式设置为no-cors"以获取禁用 CORS 的资源.

                  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 的所有步骤(授权请求,创建签名)但也许我忽略了我的代码中的某些内容.

                  I know what Access-Control-Allow-Origin means. I think I followed all the steps per the Twitter API (Authorizing a request, Creating a signature) but maybe I am overlooking something in my code.

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

                  Also I did not find anything in the API docs that say I have to use a server to call their API, but maybe I missed something.

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

                  Below is the function literal fetchUser that gets the user information.

                  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;
                  }
                  

                  看看我正在使用的整个代码(CodePen)

                  推荐答案

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

                  I had to create a Node server to call the API, no biggie

                  这篇关于我可以使用 Fetch 在客户端调用 Twitter API 吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Fetch multiple links inside foreach loop(在 foreach 循环中获取多个链接)
                  Backbone Fetch Request is OPTIONS method(Backbone Fetch Request 是 OPTIONS 方法)
                  Fetch API leaks memory in Chrome(Fetch API 在 Chrome 中泄漏内存)
                  How can I download and save a file using the Fetch API? (Node.js)(如何使用 Fetch API 下载和保存文件?(Node.js))
                  Send blob data to node using fetch, multer, express(使用 fetch、multer、express 将 blob 数据发送到节点)
                  Sending a custom User-Agent string along with my headers (fetch)(发送自定义用户代理字符串以及我的标头(获取))
                    <bdo id='88QLE'></bdo><ul id='88QLE'></ul>
                      <tbody id='88QLE'></tbody>

                      <small id='88QLE'></small><noframes id='88QLE'>

                          • <tfoot id='88QLE'></tfoot>
                            <i id='88QLE'><tr id='88QLE'><dt id='88QLE'><q id='88QLE'><span id='88QLE'><b id='88QLE'><form id='88QLE'><ins id='88QLE'></ins><ul id='88QLE'></ul><sub id='88QLE'></sub></form><legend id='88QLE'></legend><bdo id='88QLE'><pre id='88QLE'><center id='88QLE'></center></pre></bdo></b><th id='88QLE'></th></span></q></dt></tr></i><div id='88QLE'><tfoot id='88QLE'></tfoot><dl id='88QLE'><fieldset id='88QLE'></fieldset></dl></div>
                          • <legend id='88QLE'><style id='88QLE'><dir id='88QLE'><q id='88QLE'></q></dir></style></legend>