React项目中useOpenWeather()始终返回401未授权错误求助
解决React-Open-Weather库useOpenWeather返回401未授权错误
核心原因
你遇到的401错误是因为OpenWeatherMap的One Call API(即你请求的/data/2.5/onecall接口)需要单独的访问权限,免费版API密钥默认无法访问该接口,而你验证用的forecast接口属于免费开放范围,所以能正常返回数据。
解决方案
检查API密钥的One Call API权限:
登录OpenWeatherMap后台,进入"My API Keys"页面,确认你的密钥是否启用了One Call API 3.0(注意v2.5的One Call API已逐步淘汰,当前免费用户需使用v3.0的免费额度)。若无权限,可升级订阅或改用其他免费接口。改用库支持的其他接口调用方式:
避免使用lat和lon参数(该参数会触发onecall接口),改用cityName或cityId参数,让库调用免费开放的weather或forecast接口。修改代码示例:const { data, isLoading, errorMessage } = useOpenWeather({ key: '你的实际API密钥', cityName: 'Munich', lang: 'en', unit: 'metric', });确认API密钥正确性:
确保代码中key字段的值是OpenWeatherMap后台获取的完整密钥,无多余空格或拼写错误。等待密钥激活:
新生成的API密钥可能需要1-5分钟生效,若刚生成密钥不久,可稍作等待后再测试。
内容的提问来源于stack exchange,提问作者Quiet Coder
相关产品推荐
相关产品推荐

