Доступ запрещен из-за неверного ключа подписки - PullRequest
0 голосов
/ 29 февраля 2020

Я использовал API REST Crossref, где я просто отправляю ему запрос в адресной строке браузера, который затем возвращает результаты в 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 голосов
/ 02 марта 2020

Я наконец нашел документацию для того, что мне было нужно (документация Microsoft вокруг Azure - это ужасный лабиринт с множеством устаревших и сломанных вещей).

Итак, документация здесь:

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>

Запрос возвращает все заголовки для автора "jam ie teevan". Хотя в этом примере я просто выводю первый заголовок через «alert». Остальное я еще не кодировал - просто хотел знать, сработало ли это на данный момент.

Теперь все, что мне нужно сделать, - это разработать выражение для возврата всех цитирующих документов для данного название + автор !! : - / wi sh мне удачи.

0 голосов
/ 29 февраля 2020

Что такое «Microsoft REST API»? Вы имеете в виду Azure Управление API? «Неверный ключ подписки» подразумевает, что это API, размещенный в API Management, который использует этот термин для описания своей модели аутентификации. В следующем ответе предполагается, что это так.

Вы должны быть зарегистрированы как пользователь и получить ключ подписки. Для этого существует портал самообслуживания, который описан в этой документации . Администратор API может решать, разрешено ли вам самообслуживание или нет, поэтому вы можете или не можете сделать это самостоятельно, или вам, возможно, придется попросить администратора зарегистрировать вас. Дальнейшая документация описывает немного, как использовать портал .

Когда он у вас есть, вы примените его как заголовок http с именем Ocp-Apim-Subscription-Key, но ожидаемое имя также настраивается и возможно, был изменен, что администратор должен будет сообщить вам.

...