尝试获取API密钥时出现401授权错误

问题描述 投票:0回答:6

尝试从 Spoonaulous 获取 API 密钥时出现以下错误:代码:401 消息:“您未获得授权。请阅读 https://spoonaulous.com/food-api/docs#Authentication” 状态:“失败”

我尝试关闭浏览器并使用 npm start 重新启动它,但仍然收到错误。我还尝试了 Spoonaulous 的不同 API 密钥,但仍然遇到相同的错误。我也尝试过清除浏览器缓存,但仍然遇到相同的错误。

请建议我如何修复此错误。

我的代码:

import { useEffect } from 'react';

function Popular() {
  useEffect(() => {
    getPopular();
  }, []);

  const getPopular = async () => {
    const api = await fetch(
      'https://api.spoonacular.com/recipes/random?apiKey=${process.env.REACT_APP_API_KEY}&NUMBER=9'
    );
    const data = await api.json();                 
    console.log(data);
  };
  return <div>Popular</div>;
}

export default Popular;

提前致谢

reactjs api jsx http-status-code-401
6个回答
1
投票

您需要使用带有反引号`的模板文字。

错误:

const api = await fetch(
      'https://api.spoonacular.com/recipes/random?apiKey=${process.env.REACT_APP_API_KEY}&NUMBER=9'
    );

正确

const api = await fetch(
      `https://api.spoonacular.com/recipes/random?apiKey=${process.env.REACT_APP_API_KEY}&NUMBER=9`
    );

0
投票

检查您的 env 文件是否位于根文件夹中而不是 src 文件夹中 在 env 文件中分配 API 密钥时,也不要给出任何空格 或 。

对我来说这是一个错误。


0
投票

您应该始终调用

Try catch
中的API,以便您可以记录错误并检查是否有错误。 401 状态未经授权,您必须在 API“标头”中传递授权令牌。

const getPopular = async () => {
    const api = await fetch(
      `https://api.spoonacular.com/recipes/random?apiKey=${process.env.REACT_APP_API_KEY}&NUMBER=9`, {
  headers: {
    'Authorization': // pass your token here
    }
     }
    );
    try {
      const data = await api.json();                 
      console.log(data);
    } catch (error) {
       console.log(error.response) 
    }
  };

0
投票

检查您的 env 文件是否位于根文件夹中。我删除了 .env 文件并再次创建它,它起作用了。


0
投票

试试这个;它对我有用:

import { useEffect } from "react";

const Popular = () => {
  useEffect(() => {
    getpopular();
  }, []);

  const getpopular = async () => {
    const api = await fetch(
      `https://api.spoonacular.com/recipes/random?number=10&apiKey=YOUR API KEY`
    );
    const data = await api.json();
    console.log(data);
  };
  return <div>Popular</div>;
};

export default Popular;

0
投票

请在 API 端点末尾添加“apiKey”参数。请务必在其前面加上“?”。

© www.soinside.com 2019 - 2024. All rights reserved.