Azure active directory 使用Azure AD Graph API在Azure AD B2C中创建用户

Azure active directory 使用Azure AD Graph API在Azure AD B2C中创建用户,azure-active-directory,azure-ad-b2c,azure-ad-graph-api,Azure Active Directory,Azure Ad B2c,Azure Ad Graph Api,我的应用程序旨在使用Azure AD Graph API将用户添加到我的Azure AD B2C。我还处理了这样一个案例:我将使用AD中已经存在的电子邮件ID调用add user graph API。我在响应正文中查找错误消息以处理此问题。回复信息有什么变化吗 POST https://graph.windows.net/{tenant}/users?api-version=1.6 请求机构: { "accountEnabled": true, "signInNames": [

我的应用程序旨在使用Azure AD Graph API将用户添加到我的Azure AD B2C。我还处理了这样一个案例:我将使用AD中已经存在的电子邮件ID调用add user graph API。我在响应正文中查找错误消息以处理此问题。回复信息有什么变化吗

POST
https://graph.windows.net/{tenant}/users?api-version=1.6
请求机构:

{
  "accountEnabled": true,
  "signInNames": [
    {
        "type": "EmailAddress",
        "value": "TestGraphApiCreatedUser@TestGraphApiCreatedUser.com"
    }],
  "displayName": "TestGraphApiCreatedUser",
  "mailNickname": "TestGraphApiCreatedUser",
  "passwordProfile" : {
    "forceChangePasswordNextLogin": false,
    "password": "vhkjds#fceu456VCHU"
  },
  "creationType": "LocalAccount",
  "passwordPolicies": "DisablePasswordExpiration"
}
如果已经存在具有给定电子邮件地址的用户,则我之前遇到的错误是

{
    "odata.error": {
        "code": "Request_BadRequest",
        "message": {
            "lang": "en",
            "value": "Another object with the same value for property signInName already exists."
        }
    }
}
现在,对于相同的流,我得到以下错误:

{
    "odata.error": {
        "code": "Request_BadRequest",
        "message": {
            "lang": "en",
            "value": "Another object with the same value for property userPrincipalName already exists."
        }
    }
}

这两条错误消息之间有什么区别吗。因为没有任何错误代码,所以我硬编码了整个错误消息。现在消息中有了一点变化,我必须更新我的代码。如何更好地处理此问题?

我没有检查他们是否更改了错误消息,但如果他们更改了,我一点也不会感到惊讶。userPrincipalName可能来自底层AAD,可能MS更改了B2C实现,现在它暴露了一条错误消息

在您的特定情况下,更好的选择可能是在调用API创建新用户之前检查B2C中是否存在电子邮件地址。这是一个额外的API调用,但除非您一次创建多个用户(例如成批创建),否则它应该不会有多大影响。您仍然需要处理用户创建调用失败,但如果发生这种情况,您可以返回一条通用错误消息