![](/img/trans.png)
[英]Microsoft graph change azure ad b2c user password not working
[英]Change user password on Azure AD B2C using Microsoft Graph + Http Client
我有这个代码...
public class PasswordProfile {
public bool forceChangePasswordNextSignIn { get { return false; } }
public string password { get; set; }
}
protected async Task setPasswords(string newP)
{
PasswordProfile newPassword = new PasswordProfile()
{
password = newP
};
var content = new StringContent(JsonSerializer.Serialize(newPassword), Encoding.UTF8, "application/json");
Http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", appToken);
var update = await Http.PatchAsync($"https://graph.microsoft.com/v1.0/users/{userUUID}", content);
}
我可以使用 Postman 来完成这个场景。 我只是将方法设置为补丁,将 json 作为主体,返回 204 并且密码确实更改了,效果很好。
但是我的代码返回 404。有什么线索吗?
当您调用JsonSerializer.Serialize(newPassword)
它返回以下 json
{
"forceChangePasswordNextSignIn": false,
"password": "xWwvJ]6NMw+bWH-d"
}
但是图形 API 端点期望像这样的 json
{
"passwordProfile": {
"forceChangePasswordNextSignIn": false,
"password": "xWwvJ]6NMw+bWH-d"
}
}
您可以使用PasswordProfile
属性创建新的 class User
并序列化User
class 的实例。
public class User
{
public PasswordProfile passwordProfile { get; set; }
}
protected async Task setPasswords(string newP)
{
var user = new User
{
passwordProfile = new PasswordProfile
{
password = newP
}
}
var content = new StringContent(JsonSerializer.Serialize(user), Encoding.UTF8, "application/json");
Http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", appToken);
var update = await Http.PatchAsync($"https://graph.microsoft.com/v1.0/users/{userUUID}", content);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.