Приглашенный участник является арендатором приглашения: ошибка конечной точки приглашений Azure AD - PullRequest
1 голос
/ 03 июня 2019

Я хочу вызвать API приглашений , чтобы пригласить пользователей войти через Microsoft Graph API.

Мой код работает для большинства писем, по которым я вызываю API, однако для некоторых писем я получаю эту ошибку:

{
    "error": {
        "code": "BadRequest",
        "message": "Invitee is in inviter tenant",
        "innerError": {
            "request-id": <request id>,
            "date": 2019-06-03T05:51:21
        }
    }
}

Есть идеи, почему возникает эта проблема?

Для ясности, когда я впервые вызвал API для этого письма, письмо с приглашением было успешно отправлено. Однако после нескольких раз тестирования я получаю эту ошибку.

Сначала я подозревал, что нажатие на кнопку «Начать» в сообщении электронной почты вызвало эту ошибку, и проверил эту гипотезу в письме Outlook. Однако после нажатия кнопки «Начать» для проверки электронной почты и повторного вызова API электронное письмо с приглашением по-прежнему отправляется в обычном режиме.

Мой фрагмент кода выглядит следующим образом:

$curlStat = curl_init();
$feedURL = 'https://graph.microsoft.com/v1.0/invitations';
$data_body = Array(
    'invitedUserEmailAddress' => <test-email>,
    'inviteRedirectUrl' => <my-redirect-url>,
    'sendInvitationMessage' => true
);
$headers = array(
    "Authorization: Bearer " . <my-access-token>,
    "Content-Type: application/json"
);
$data_body = json_encode($data_body);
curl_setopt($curlStat, CURLOPT_URL, $feedURL);
curl_setopt($curlStat, CURLOPT_POST, true);
curl_setopt($curlStat, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curlStat, CURLOPT_POSTFIELDS, $data_body);
curl_setopt($curlStat, CURLOPT_RETURNTRANSFER, true);
$emailOutput = curl_exec($curlStat);
curl_close($curlStat);

1 Ответ

1 голос
/ 03 июня 2019

Мне известны два условия, которые приводят к возникновению этой (или аналогичной) ошибки:

  1. Вы пытаетесь пригласить кого-то с адресом из одного из подтвержденных доменов. Другими словами, если ваш арендатор перечисляет company.onmicrosoft.com и company.com как проверенные домены, попытка пригласить адрес, заканчивающийся на @company.onmicrosoft.com или @company.com, будет неудачной.

  2. Внешний адрес электронной почты, который вы указали, уже существует в клиенте (обычно потому, что он уже принял предыдущее приглашение).

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

Что касается того, почему вы могли отправить приглашение сразу после принятия предыдущего приглашения, это, скорее всего, просто условие гонки. Для обработки приглашения, создания пользовательской записи и распространения изменений в клиенте AAD требуется несколько секунд. Попробуйте подождать 1 минуту после принятия приглашения, и я подозреваю, что вы постоянно будете видеть эту ошибку.

...