被邀请人位于邀请人租户中:Azure AD邀请端点错误

时间:2019-06-03 07:15:54

标签: php azure-active-directory microsoft-graph

我想调用Invitations 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 个答案:

答案 0 :(得分:1)

我知道导致此(或类似)错误触发的两种情况:

  1. 您正试图邀请具有来自已验证域之一地址的某人。换句话说,如果您的租户将company.onmicrosoft.comcompany.com列为经过验证的域,则尝试邀请以@company.onmicrosoft.com@company.com结尾的地址将失败。

  2. 您提供的外部电子邮件地址已经存在于租户中(通常是因为他们已经接受了先前的邀请)。

这两者都归结为相同的根本原因:您无法向已经分配给现有用户的电子邮件地址发送邀请。

关于为什么您在接受之前的邀请后可以立即发送邀请的原因,这很可能是比赛条件。处理邀请,创建用户记录以及更改要在您的AAD租户中传播需要一些时间。接受邀请后,请等待1分钟,我怀疑您会持续看到此错误。