【问题标题】:How to pass api ID and api Key as authentication parameters of HTTP request如何传递 api ID 和 api Key 作为 HTTP 请求的认证参数
【发布时间】:2018-02-11 04:52:04
【问题描述】:

我无法访问牛津词典 API。我不断收到错误“缺少身份验证参数”。

我相信我没有正确传递 api ID 和密钥。 我已经参考了这个文档: https://developer.oxforddictionaries.com/documentation/making-requests-to-the-api https://developer.oxforddictionaries.com/documentation

这是我的代码;相信我,app id 和 key 是正确的字符串。

const url = 'https://od-api.oxforddictionaries.com/api/v1/entries/en/swim';

fetch(url, {
  method: 'GET',
  headers: new Headers({
    'app_id': oxford.appId, 'app_key': oxford.appKey
  }),
}).then(function(response) {
  console.log(response);
});

【问题讨论】:

    标签: javascript api fetch


    【解决方案1】:

    如果站点在寻找身份验证标头,它可能会参考基本身份验证标头,read more here。如果这是真的,你可以简单地附加你的 header 参数:

    var headers = new Headers()
    
    headers.append('Authorization', 'Basic ' + base64.encode(app_id + ":" + app_key));
    

    您可以尝试使用或不使用编码。

    如果不起作用,你也可以试试这个

    const url = 'https://od-api.oxforddictionaries.com/api/v1/entries/en/swim';
    
    fetch(url, {
     method: 'GET',
     headers: { //HERE IS THE DIFFERENCE
       'app_id': oxford.appId, 'app_key': oxford.appKey
     },
     mode: 'no-cors'
    }).then(function(response) {
      console.log(response);
    }); 
    

    如果这不起作用, 换个角度想,可能是CORS问题,可以多看here

    希望这会有所帮助。

    【讨论】:

    • 不工作。我先尝试了没有编码。 base64 未定义,所以我尝试了 btoa() 并对其进行了编码,但身份验证不起作用。
    • 你试过我的第二个选项了吗?
    • 您的意思是将一个简单的对象传递给 headers 属性,而不是 Headers 对象,对吧?是的,我做到了。不行。
    • 你确定当你尝试我的第二个选项时它返回“身份验证参数丢失”而不是“身份验证失败”吗?
    • 是的,'缺少身份验证参数'
    【解决方案2】:

    我找到了问题here 的答案。看起来 API 不支持客户端应用程序请求。我想我得创建一个服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-21
      • 1970-01-01
      • 2011-12-22
      • 1970-01-01
      • 2018-05-30
      • 2021-09-24
      • 2021-02-01
      • 2017-05-31
      相关资源
      最近更新 更多