Microsoft Graph API возвращает ошибку 404 с отсутствующим параметром, несмотря на тип_транспорта в строке запроса - PullRequest
0 голосов
/ 22 января 2019

Вызов API-интерфейса Microsoft Graph для получения токена доступа с помощью части 4 этого руководства: https://docs.microsoft.com/en-us/graph/auth-v2-service?view=graph-rest-1.0

Я выполняю следующий запрос на выборку:

  var options = {
    "method": "POST",
    "contentType": "application/x-www-form-urlencoded",
    "accept": 'application/json',
    "headers": {
      'Content-Type': "application/x-www-form-urlencoded",
    },
  }
  var authorization_url = "https://login.microsoftonline.com/" + tenant + 
    "/oauth2/v2.0/token/" + 
      "client_id=" + client_id + 
        "&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default" +
          "&client_secret=" + client_secret + 
              "&grant_type=client_credentials";

Достоверно уверен, что все мои параметры верны, но возвращает неверный запрос: «Тело запроса должно содержать следующий параметр:« grant_type »». Есть идеи, что может пойти не так?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Ваш authorization_url должен включать только конечную точку (т.е. без строки запроса):

var authorization_url = "https://login.microsoftonline.com/" + tenant + "/oauth2/v2.0/token/"

Параметры принадлежат телу POST:

var payload = 
    "client_id=" + client_id + 
    "&client_secret=" + client_secret + 
    "&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default" +
    "&grant_type=client_credentials";

(ваш options выглядит хорошо для меня)

0 голосов
/ 22 января 2019

Я подозреваю, что вы ссылаетесь на запрос токена на этой странице .

Это показывает следующее представление HTTP-запроса:

// Line breaks are for legibility only.

POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials

Самая низкая часть представляет тело HTTP-запроса, а не аргументы, передаваемые в строке запроса URL.

Я предлагаю изменить код, чтобы учесть эти изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...