c# - Azure AD B2C 更新用户登录名导致错误
问题描述
当我尝试更新 的列表时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);
然后它返回错误。我使用类似的代码来更新密码,效果很好。我忽略了什么吗?
解决方案
所以,我所做的是:
- 我通过用户的登录名(电子邮件地址)获得了用户
- 我尝试使用登录名编辑用户
第一个是可能的,但第二个是不可能的。我不得不使用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);
推荐阅读
- amazon-web-services - 错误 aws_cloudwatch_log_subscription_filter 到 AWS Lambda with Terraform
- javascript - Nodemailer 不发送带有换行符的文本
- c++ - 给定具有两个输出变量的顶点着色器,如何在 Qt3D 中正确定义两个 QRenderTargets 以获得深度和颜色信息
- javascript - 是否存在仅适用于 Internet Explorer 9 而现代浏览器不支持的功能?
- pine-script - 如何在交易视图上自动绘制目标
- c++ - 验证用户条目是一个 int
- android - 如何从创建数据库的类外部调用 SQLite 数据库删除列(“db.delete”)
- ios - 我想从 SwiftUI 的列表项中删除披露图标
- android - 在燃料请求中正确设置 cookie
- php - 使用 fopen 下载文件不适用于某些文件名