Microsoft Graph возвращает 401, даже если у меня есть действительный токен доступа - PullRequest
0 голосов
/ 12 февраля 2020

В настоящее время я пытаюсь получить все события календаря пользователя outlook. Я выполнил все инструкции по настройке Azure Active Directory V 2.0 и получаю токен доступа:

Office.context.auth.getAccessTokenAsync(
    {
      allowConsentPrompt: true,
      allowSignInPrompt: true,
    },
   (result) => {
      if (result.status === 'succeeded') {
        return result.value
      }

      return result.error
    },
  )

После этого я пытаюсь получить события календаря пользователя, выполнив:

fetch(
`https://graph.microsoft.com/v1.0/me/events`,
{
  method: 'GET',
  headers: {
    Authorization: `Bearer ${accessToken}`,
    'Access-Control-Allow-Credentials': true,
    'access-control-allow-origin': 'my.domain',
    'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',
    Prefer: 'outlook.timezone',
  }
}

)

В конце я получаю ответ 401 с телом:

{
  "error": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token validation failure. Invalid audience.",
    "innerError": {
      "request-id": "1fba5937-3106-460c-98a6-a1e7858b8116",
      "date": "2020-02-12T13:59:21"
    }
  }
}

В данный момент я застрял, я также пытался использовать вместо графа. microsoft.com для использования Office.context.mailbox.restUrl, но тот не принимает токен доступа, который у меня есть. Может быть, я могу пропустить что-то очевидное?

PS: я забыл упомянуть, что разрешения области, которые я дал моей надстройке:

<Scopes>
      <Scope>user.read</Scope>
      <Scope>profile</Scope>
      <Scope>openid</Scope>
      <Scope>email</Scope>
      <Scope>offline_access</Scope>
      <Scope>files.read.all</Scope>
      <Scope>calendars.read</Scope>
    </Scopes>

Спасибо

1 Ответ

2 голосов
/ 12 февраля 2020

Invalid audience означает, что ваш токен был выдан для API, отличного от того, который вы вызываете. Если вы скопируете токен и перейдете к https://jwt.ms, вы можете проанализировать его и изучить претензию aud. Если это не https://graph.microsoft.com, вы не можете использовать его для вызова Microsoft Graph.

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