繁体   English   中英

在 C# 中通过 Microsoft Graph API 更新用户在 Email 地址中的登录

[英]Updating User's sign in Email Address via Microsoft Graph API in C#

在 C# 中使用 Microsoft Graph API 我可以成功获取用户的详细信息并更新他们的名字或扩展属性中保存的详细信息。 但是,是否可以更新他们用来登录的 email 地址?

我可以在“身份”部分看到它,但我看不到更新那里保存的值的方法。

是否可以更新他们用来登录的 email 地址?

如果您参考User.identities属性

表示可用于登录此用户帐户的身份。

那么是的,支持更新此属性。

注意:更新 identities 属性需要User.ManageIdentities.All权限

PATCH https://graph.microsoft.com/v1.0/users/{id-or-upn}

{
    "identities": [
        {
            "signInType": "emailAddress",
            "issuer": "{tenant-name}",
            "issuerAssignedId": "{user-signIn-email}"
        }
    ]
}

C# 示例

var tenant = "contoso.onmicrosoft.com";
var existingEmailAddress = "current_email@contoso.com";
var newEmailAddress = "new_email@contoso.com";
        
//1 . find user
var users = await graphClient.Users
        .Request()
        .Filter($"identities/any(c:c/issuerAssignedId eq '{existingEmailAddress}' and c/issuer eq '{tenant}')")
        .Select("displayName,id,userPrincipalName")
        .GetAsync();
        
var foundUser = users.FirstOrDefault();
       
//2. update user identity
var user = new User
 {
         Identities = new List<ObjectIdentity>()
         {
             new ObjectIdentity
             {
                 SignInType = "emailAddress",
                 Issuer = tenant,
                 IssuerAssignedId = newEmailAddress    
             }
         }
 };

 await graphClient.Users[foundUser.Id].Request().UpdateAsync(user);

userPrincipalName是您需要更新的字段。 根据更新用户文档使用下面的正文对我有用。

PATCH https://graph.microsoft.com/v1.0/users/{USER-ID}
{
  "userPrincipalName": "alias@domain.com"
}

将此字段添加到 C# 调用并且应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM