OpenWeatherMap 中的 API 密钥无效(错误 401)[重复]

问题描述 投票:0回答: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
错误?

flutter api-key http-status-code-401 openweathermap
4个回答
14
投票

checkout 使用 OpenWeatherMap API 出现 401 错误 在这里您将找到 apikey 无法工作的一些原因。 另外,密钥激活需要2个小时。


10
投票

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

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

因此,如果您有一个接受城市名称输入的文本字段,那么上面的 fetch 调用就可以工作。

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

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

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

希望我在这个平台上的第一个回答可以帮助别人。


3
投票

对于 openweather 地图,如果您是新用户并且刚刚生成您的 api 密钥,那么需要 45 分钟才能激活您的密钥


-2
投票

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

您可以根据需要生成任意数量的 api 密钥。

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