由于订阅密钥无效,访问被拒绝

时间:2020-02-29 10:45:15

标签: azure rest

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

所以我发送以下URL:

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-我将如何向其发送密钥?

谢谢。

2 个答案:

答案 0 :(得分:0)

什么是“ Microsoft REST API”?您是指Azure API管理吗? “无效的订阅密钥”表示这是API管理中托管的API,使用此术语描述其身份验证模型。以下答案假定是这种情况。

您将需要注册为用户并获得订阅密钥。有一个this documentation描述的自助服务门户网站。是否允许自助服务由API管理员决定,因此您是否可以自己进行自助服务,或者您可能必须请求管理员进行注册。 Further documentation describes a bit how to use the portal

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

答案 1 :(得分:0)

我终于找到了我需要的文档(有关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”的所有标题。 尽管在此示例中,我只是通过“ alert”输出第一个标题。我还没有编写其余的代码-只是想知道它现在是否有效。

现在我要做的就是计算表达式,以返回给定标题和作者的所有引用文档!! :-/祝我好运。