首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误401 :未经授权,在使用www.openweathermap.org时即使在使用API键后也会收到

错误401 :未经授权,在使用www.openweathermap.org时即使在使用API键后也会收到
EN

Stack Overflow用户
提问于 2016-06-10 17:03:12
回答 3查看 3.8K关注 0票数 1

嗨,我正在使用javascript编写我的第一个web应用程序,并使用来自www.openathermap.org的API获取数据,正如文档中提到的那样,我使用了API密钥,但这是一个未经授权的错误。在调用函数时,是否还有其他原因造成此错误。提前谢谢你。

代码语言:javascript
复制
    var APPID = "my_secret_key";
    var temp;
    var loc;
    var icon;
    var wind;
    var humidity;
    var direction;
    function updateByZip(zip){
      var url = "http://api.openweathermap.org/data/2.5/weather?" + 
                "zip = " + zip +
                "&APPID =" + APPID ;
    sendRequest(url);
     }

    function sendRequest(url){
      var xmlhttp = new XMLHttpRequest();
      xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
         var data = JSON.parse(xmlhttp.responseText) ;
         var weather = {}; 
         weather.wind = data.wind.speed; 
         weather.direction = data.wind.deg;
         weather.loc = data.name;
         weather.temp = data.main.temp;
         weather.icon = data.weather[0].id;
         weather.humidity=data.main.humidity;
         update(weather);
        }
       };
        xmlhttp.open("GET", url, true);
        xmlhttp.send();
        }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-10 19:51:12

是URL中等号附近的空格。它可能会对空间进行代码化,并将参数发送为APPID%20,这是不被识别为有效的。

代码语言:javascript
复制
  var url = "http://api.openweathermap.org/data/2.5/weather?" + 
            "zip=" + zip +
            "&APPID=" + APPID;
票数 3
EN

Stack Overflow用户

发布于 2020-12-13 12:53:38

对于未来的用户,因为我有401错误,但解决方法不同。

错误:无效的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

代码语言:javascript
复制
API_KEY=djgkv43439d90bkckcs

无分号、引号等

3)检查请求URL

检查请求url将在哪里进行API调用,确保

  • 它没有空格,没有支撑等
  • 根据URL编码进行更正
  • 根据API文档进行更正

4)使用dotenv调试:

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

代码语言:javascript
复制
const result = dotenv.config()

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

这段代码检查是否解析了.env文件变量,如果被解析,它将打印API_KEY值,否则会打印解析时发生的错误。

希望能有所帮助:)

其他建议

5)检查.env文件的位置

查找.env文件在您的目录中的位置,将其移动到根目录可能有帮助(在注释中建议)

票数 0
EN

Stack Overflow用户

发布于 2021-06-03 10:25:58

对于那些遵循先前答案的人来说,他们仍然面临着401问题:似乎现在需要通过HTTPS访问API --至少对我来说是这样的。一些较老的指南和教程可能继续在代码中使用http://,因此您必须将其更改为https://

据我所知,OpenWeather的官方文档中没有提到这一点,而且它们也没有在示例中包括该协议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37753633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档