Учетные данные клиента Microsoft Graph - получить ошибку при отправке электронного письма от имени пользователя

Я успешно настроил учетные данные клиента OAuth 2.0 для Microsoft Graph, у меня нет проблем с аутентификационным токеном, я подписался на получение веб-хуков электронной почты для нескольких пользователей и получаю эти уведомления по электронной почте.

На портале Azure я настроил приложение на наличие разрешений уровня приложения Microsoft Graph для "Отправлять почту как любой пользователь".

Я пытаюсь переслать письмо, используя Graph, но получаю BadRequest ошибка:

{
  "error": {
    "code": "BadRequest",
    "message":
      "Current authenticated context is not valid for this request. This occurs when a request is made to an endpoint that requires user sign-in. For example, /me requires a signed-in user.  Acquire a token on behalf of a user to make requests to these endpoints.  Use the OAuth 2.0 authorization code flow for mobile and native apps and the OAuth 2.0 implicit flow for single-page web apps.",
    "innerError": {
      "request-id": "a64c4533-9389-4284-8cf5-68fcadf21832",
      "date": "2018-05-27T17:34:29"
    }
  }
}

Вот как я отправляю запрос:

postData(
    `${graphVersion}/me/messages/${req.body.emailUid}/forward`,
    global.accessToken,
    JSON.stringify(forwardConfiguration),
    (requestError, data) => {
        if (requestError) {
            logger.log('error', "Failed to forward email: " + JSON.stringify(requestError));
        } else {
            logger.log("info", "Successfully forwarded email from " + req.body.email);
        }
    }
);

1 ответ

Решение

Вы не можете использовать /me с учетными данными клиента.

Это потому что /me это просто псевдоним для /user/{currentUser}, Когда вы используете учетные данные клиента, для API не существует "пользователя" для сопоставления этого псевдонима.

Вам необходимо явно указать user ты хочешь:

/users/{userId or userPrincipalName}/messages
Другие вопросы по тегам