Azure AD B2C 更新用户登录名导致错误
Azure AD B2C updating users sign in names results in error
当我尝试更新 SignInNames
的列表时,出现错误:
Resource <EMAIL ADDRESS> does not exist or one of its queried reference-property objects are not present
.
var currentUser = await GetUserByUserNameAsync(userId); // this gets the user
var signinNames = currentUser.SignInNames.ToList();
signinNames.Add(new SignInName
{
Type = "emailAddress",
Value = newEmailaddress
});
var data = new B2CChangeEmailAddressData()
{
SignInNames = signinNames
};
var response = await _graphApi.SendAsync(new HttpMethod("PATCH"), $"users/{userId}", null, data);
然后 returns 错误。
我使用可比较的代码来更新密码,效果很好。我是不是忽略了什么?
所以,我所做的是:
- 我通过登录名(电子邮件地址)找到了用户
- 我尝试使用登录名编辑用户
第一个是可能的,但第二个不是。我不得不使用 ObjectId
更新用户。所以代码应该是:
var currentUser = await GetUserByUserNameAsync(userId);
var path = $"users/{currentUser.ObjectId}";
var signinNames = new List<SignInName>();
signinNames.Add(new SignInName
{
Type = "emailAddress",
Value = newEmailaddress
});
var data = new B2CChangeEmailAddressData()
{
SignInNames = signinNames
};
var response = await _graphApi.SendAsync(new HttpMethod("PATCH"), path, null, data);
当我尝试更新 SignInNames
的列表时,出现错误:
Resource <EMAIL ADDRESS> does not exist or one of its queried reference-property objects are not present
.
var currentUser = await GetUserByUserNameAsync(userId); // this gets the user
var signinNames = currentUser.SignInNames.ToList();
signinNames.Add(new SignInName
{
Type = "emailAddress",
Value = newEmailaddress
});
var data = new B2CChangeEmailAddressData()
{
SignInNames = signinNames
};
var response = await _graphApi.SendAsync(new HttpMethod("PATCH"), $"users/{userId}", null, data);
然后 returns 错误。 我使用可比较的代码来更新密码,效果很好。我是不是忽略了什么?
所以,我所做的是:
- 我通过登录名(电子邮件地址)找到了用户
- 我尝试使用登录名编辑用户
第一个是可能的,但第二个不是。我不得不使用 ObjectId
更新用户。所以代码应该是:
var currentUser = await GetUserByUserNameAsync(userId);
var path = $"users/{currentUser.ObjectId}";
var signinNames = new List<SignInName>();
signinNames.Add(new SignInName
{
Type = "emailAddress",
Value = newEmailaddress
});
var data = new B2CChangeEmailAddressData()
{
SignInNames = signinNames
};
var response = await _graphApi.SendAsync(new HttpMethod("PATCH"), path, null, data);