【问题标题】:Access denied due to invalid subscription key由于订阅密钥无效,访问被拒绝
【发布时间】:2020-03-03 18:57:54
【问题描述】:

我使用了 Crossref REST API,我只是在浏览器地址栏中向其发送查询,然后以 JSON 格式返回结果。

所以我发送以下网址:

https://api.crossref.org/works?query.bibliographic=Randomized trial of intensive early intervention for children with pervasive developmental disorder&query.author=Groen&rows=1

我希望 Microsoft REST API 也是如此,但如果我发送它:

我收到“由于订阅密钥无效而拒绝访问”。

我可以通过 URL 传递我的密钥吗?如果有怎么办?

还是没那么简单。

它还需要其他代码吗?如果需要,我可以用 PHP 编写代码,或者使用 jQuery。

类似:

$(document).ready(function() {
  $.ajax({
    type:'GET',
    url:'https://api.crossref.org/works?query.bibliographic=<?php echo $title ?>&query.author=<?php echo $author ?>&rows=1&select=is-referenced-by-count,author,title,DOI,issn-type,volume,issue,link,page,abstract',

    success:function(result) {
      var total_results = result.message["total-results"];
    } 
});

但同样,使用 Microsoft API - 我将如何向它发送密钥?

谢谢。

【问题讨论】:

    标签: azure rest


    【解决方案1】:

    什么是“Microsoft REST API”?你是说 Azure API 管理吗? “无效订阅密钥”意味着这是托管在 API Management 中的 API,它使用该术语来描述其身份验证模型。以下答案假设是这种情况。

    您需要注册为用户并获得订阅密钥。有一个用于执行此操作的自助服务门户,this documentation 对此进行了描述。是否允许您进行自助服务取决于 API 的管理员,因此您可能自己也可能无法做到这一点,或者您可能需要请求管理员为您注册。 Further documentation describes a bit how to use the portal.

    当您拥有它时,您可以将其应用为名为 Ocp-Apim-Subscription-Key 的 http 标头,但它所期望的名称也是可配置的,并且可能已更改,管理员必须告诉您。

    【讨论】:

    【解决方案2】:

    我终于找到了我需要的文档(围绕 Azure 的 Microsoft 文档是一个可怕的迷宫,里面有很多过时和损坏的东西)。

    所以文档在这里:

    https://msr-apis.portal.azure-api.net/docs/services/academic-search-api/operations/565d753be597ed16ac3ffc03?

    我修改了页面底部的 Jacascript 示例并提出:

    <!DOCTYPE html>
    
    <head>
    
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 
    
    <script type="text/javascript">  
    
    $(document).ready(function() {
      $.ajax({
            type:'GET',
            url:'https://api.labs.cognitive.microsoft.com/academic/v1.0/evaluate?expr=Composite(AA.AuN==%27jaime%20teevan%27)&count=2&attributes=Ti,Y,CC,AA.AuN,AA.AuId',
            beforeSend: function(xhrObj){
              // Request headers
              xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","xxxxmykeyxxxxx");
            },
            success:function(result) {
    
              alert(result.entities[0].Ti);
    
            } 
        });
    });
    
    </script>
    </head>
    </html>
    

    查询返回作者“jamie teevan”的所有标题。 虽然在这个例子中我只是通过“警报”输出第一个标题。我还没有编写其余的代码 - 只是想知道它在这一点上是否有效。

    现在我需要做的就是计算出返回给定标题+作者的所有施引文献的表达式! :-/ 祝我好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 2020-11-20
      • 2012-10-28
      • 1970-01-01
      • 2020-06-11
      相关资源
      最近更新 更多