我想调用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);
答案 0 :(得分:1)
我知道导致此(或类似)错误触发的两种情况:
您正试图邀请具有来自已验证域之一地址的某人。换句话说,如果您的租户将company.onmicrosoft.com
和company.com
列为经过验证的域,则尝试邀请以@company.onmicrosoft.com
或@company.com
结尾的地址将失败。
您提供的外部电子邮件地址已经存在于租户中(通常是因为他们已经接受了先前的邀请)。
这两者都归结为相同的根本原因:您无法向已经分配给现有用户的电子邮件地址发送邀请。
关于为什么您在接受之前的邀请后可以立即发送邀请的原因,这很可能是比赛条件。处理邀请,创建用户记录以及更改要在您的AAD租户中传播需要一些时间。接受邀请后,请等待1分钟,我怀疑您会持续看到此错误。