6

我正在尝试以 JSON 格式获取伦敦的天气数据,但我得到了HTTPError: HTTP Error 401: Unauthorized. 如何让 API 正常工作?

import urllib2
url = "http://api.openweathermap.org/data/2.5/forecast/daily?q=London&cnt=10&mode=json&units=metric"
response = urllib2.urlopen(url).read()
4

4 回答 4

13

打开文档时会告诉您需要先注册 API 密钥。

要访问 API,您需要注册API 密钥

由于您的网址不包含密钥,因此该网站会告诉您您未获得授权。按照说明获取密钥,然后将其添加到查询参数中。

http://api.openweathermap.org/data/2.5/forecast/daily?APPID=12345&q=...
于 2015-10-13T01:37:40.713 回答
5

错误: API 密钥无效。请参阅http://openweathermap.org/faq#error401了解更多信息

API 调用响应 401 错误: 您可以在以下情况下收到错误 401:

这里有一些步骤来发现问题。

1)检查API密钥是否被激活

一些 API 服务在仪表板中提供关键信息,无论其激活、过期等 openWeatherMap 没有。验证您的密钥是否正在工作“从浏览器进行 API 调用” api.openweathermap.org/data/2.5/weather?q=peshawar&appid=API_key

用您自己的密钥替换 API_key,如果您成功获取数据,则您的密钥被激活,否则等待几个小时以激活密钥。

2) 检查 .env 是否有拼写错误和语法

.env 是用于隐藏服务器端代码中的 API_KEY 等凭据的文件。确保您的 .env 文件变量使用正确的语法,即 NAME=VALUE

API_KEY=djgkv43439d90bkckcs

没有分号、引号等

3) 检查请求 URL

检查将进行 API 调用的请求 URL,确保

  • 它没有空格、大括号等
  • 根据 URL 编码正确
  • 根据 API 文档正确

4) 使用 dotenv 进行调试:

要知道您的 dotenv 包是否正确解析 API 密钥,请使用以下代码

const result = dotenv.config()

if (result.error) {
  throw result.error
} 
console.log(result.parsed)

此代码检查是否正在解析 .env 文件变量,如果已解析,它将打印 API_KEY 值,否则将打印解析时发生的错误。

希望它有所帮助:)

于 2020-12-13T12:58:34.220 回答
0

您的网址中未设置 api 密钥!首先你必须在https://openweathermap.org/中注册,然后在你的个人帐户中获取 api 密钥,然后这样做: http://api.openweathermap.org/data/2.5/weather?q={city} &appid=YOUR_API_KEY_HERE&units=metric

用 {YOUR_API_KEY_HERE} 替换您的 apikey 代码,然后运行您的应用程序。

于 2020-06-28T06:09:34.910 回答
0

注册后,您需要验证电子邮件。

于 2022-02-05T00:57:26.400 回答