使用 OpenWeatherMap API 会出现 401 错误

Posted

技术标签:

【中文标题】使用 OpenWeatherMap API 会出现 401 错误【英文标题】:Using OpenWeatherMap API gives 401 error 【发布时间】:2016-01-10 13:42:23 【问题描述】:

我正在尝试以 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()

【问题讨论】:

【参考方案1】:

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

API 调用响应 401 错误: 在以下情况下会出现 401 错误:

您没有在 API 请求中指定您的 API key。 您的 API 密钥尚未激活。在接下来的几个小时内,它将被激活并可以使用。 您在 API 请求中使用了错误的 API 密钥。请在personal account 中检查您的正确 API 密钥。 您已免费订阅并尝试访问我们的付费服务(例如,16 days/daily forecast API、any historical weather data、Weather maps 2.0 等)。请在您的 [个人帐户]([price and condition]) 中查看您的资费。

这里有一些步骤可以找到问题。

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 文件变量使用正确的语法,即 名称=值

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 值,否则将打印解析时发生的错误。

希望对你有所帮助:)

【讨论】:

如果您不使用 dotenv 包隐藏 API 密钥,则可以跳过 .env 步骤【参考方案2】:

您的 url 中未设置 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 代码 然后运行您的应用程序。

【讨论】:

【参考方案3】:

docs 打开时告诉您需要先注册 API 密钥。

要访问 API,您需要注册 API key

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

http://api.openweathermap.org/data/2.5/forecast/daily?APPID=12345&q=...

【讨论】:

以上是关于使用 OpenWeatherMap API 会出现 401 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 getJSON 从 openweathermap.org 获取数据

OpenWeatherMap API 与 Wunderground API?

OpenWeatherMap.ORG API - $.getJSON 不起作用,我没有收到任何数据

python使用openweathermap API获取全世界主要城市天气信息

OpenWeatherMap API HTTPS 拒绝 javascript

如何在 android 的 OpenWeatherMap api 中更改描述语言