OpenWeatherMap中的API密钥无效(错误401)

4
我正在尝试调用OpenWeatherMap的API。当我在终端中执行flutter run时,response.statusCode打印出401,这是无效API密钥的代码,尽管我已经以适当的方式生成了API密钥,并且它已经激活并正确复制。
const APIKey = '69f9afe03f52ef5c83887fc86dd79d99';

  void getData() async {
    http.Response response = await http.get(Uri.parse('https://api.openweathermap.org/data/3.0/onecall?lat=$latitude&lon=$longitude&appid=$APIKey'));
    if (response.statusCode == 200) {
      String data = response.body;
      var decodedData = jsonDecode(data);
      print(decodedData);
    } else {
      print(
        response.statusCode,
      );
    }
  }

在Flutter中使用Geolocator包来分配纬度和经度。如何纠正401错误?

4个回答

6

结账时出现OpenWeatherMap API返回401错误,这里你会找到一些原因,解释为什么你的apikey无法使用。此外,激活密钥需要2个小时。


我已经等待了两个多小时,但仍然显示相同的内容。 - user16746875
1
我认为对于大多数已经仔细检查并确保遵循 API 文档的人来说,等待很可能是答案。为了让我的 API 生效,我等了超过两个小时,最终在晚上放弃了,第二天早上再次尝试时就成功了。 - mattezell

3
可能有点晚回复,但您正在使用的URL不再是免费计划的一部分,这就是为什么您会收到该错误的原因。请尝试使用以下URL,它要求用户输入城市名称,无需使用纬度和经度。

https://api.openweathermap.org/data/2.5/weather?q=${*cityName*}&appid=${*API_key*}&units=metric

因此,如果您有一个文本字段用于输入城市名称,则上述获取调用将起作用。

这里的cityName是用户输入的位置,API_key是分配给您的API密钥。通过使用&units=metric,您将获得以摄氏度为单位的温度。如果您想要华氏度的温度,请使用&units=imperial或者如果您想要开尔文温度,只需去掉&units=metric部分。

例如,如果您在浏览器中粘贴以下内容,您将获得伦敦的天气情况。

api.openweathermap.org/data/2.5/weather?q=London&APPID=YOUR_API_KEY

希望我在这个平台上的第一个回答能帮助到某些人。


1

如果你是OpenWeatherMap的新用户,并且刚刚生成了API密钥,那么需要等待45分钟才能激活你的密钥


已经有一个被接受的答案提到了密钥激活需要时间,为什么还需要另一个答案呢? - gre_gor
@ gre_gor 这个回答比被采纳的回答早发布,所以你可以责怪他。 - Sorry for my bad English
请再次检查日期。@对不起我的英语不好 - gre_gor

0

前往网站并通过删除先前的API密钥来生成新的API密钥。

您可以生成所需数量的API密钥。


我已经这样做了,但它仍然没有起作用。 - user16746875

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接