使用C#应用在Azure AD B2C租户中搜索用户遇问题求助
问题排查:按邮箱搜索用户功能无法正常运行
我参照已修复的ListUsers函数逻辑,实现按邮箱地址搜索用户的功能,但无法正常运行。在官方文档中没找到解决方案,且旧版AI不知道Graph SDK中.Request()已被移除。以下是编写的SearchUsers函数及参考的ListUsers函数,请求协助排查:
public static async Task SearchUsers() { var scopes = new[] { "https://graph.microsoft.com/.default" }; var tenantId = "..."; var clientId = "..."; var clientSecret = "..."; ClientSecretCredential clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); var graphClient = new GraphServiceClient(clientSecretCredential, scopes); Console.Write("Enter user email address: "); string emailAddress = Console.ReadLine(); Console.WriteLine($"Looking for user with email address '{emailAddress}'..."); try { var users = await graphClient.Users .GetAsync(requestConfiguration => { requestConfiguration.QueryParameters.Select = new string[] { "id", "displayName", "givenName", "surname", "businessPhones", "identities" }; requestConfiguration.QueryParameters.Filter = $"identities/any(c:c/issuerAssignedId eq '{emailAddress}' and c/signInType eq 'emailAddress')"; }); if (users != null && users.Value.Any()) { var user = users.Value.FirstOrDefault(); if (user != null) { Console.WriteLine("------------------------"); Console.WriteLine($"ID: {user.Id}"); Console.WriteLine($"Display Name: {user.DisplayName}"); Console.WriteLine($"Given Name: {user.GivenName}"); Console.WriteLine($"Surname: {user.Surname}"); Console.WriteLine($"Email: {emailAddress}"); // Check if business phone numbers are available if (user.BusinessPhones != null && user.BusinessPhones.Any()) { Console.Write("Business Phones: "); Console.WriteLine(string.Join(", ", user.BusinessPhones)); } else { Console.WriteLine("Business Phones: N/A"); } Console.WriteLine(); } else { Console.WriteLine("No user found with the provided email address."); } } else { Console.WriteLine("No user found with the provided email address."); } } catch (Exception ex) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine($"Error: {ex.Message}"); Console.ResetColor(); } }
参考的ListUsers函数
public static async Task ListUsers() { Console.WriteLine("Getting list of users..."); var scopes = new[] { "https://graph.microsoft.com/.default" }; var tenantId = "..."; var clientId = "..."; var clientSecret = "..."; ClientSecretCredential clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret); var graphClient = new GraphServiceClient(clientSecretCredential, scopes); try { var users = await graphClient.Users.GetAsync((requestConfiguration) => { requestConfiguration.QueryParameters.Select = new string[] { "Id", "displayName", "GivenName", "Surname", "BusinessPhones", "Identities"}; }); foreach (var user in users.Value) { // Extract email address from identities var emailAddress = user.Identities?.FirstOrDefault(i => i.SignInType == "emailAddress")?.IssuerAssignedId; // Skip user if no email address is found if (string.IsNullOrEmpty(emailAddress)) continue; Console.WriteLine("------------------------"); Console.WriteLine($"ID: {user.Id}"); Console.WriteLine($"Display Name: {user.DisplayName}"); Console.WriteLine($"Given Name: {user.GivenName}"); Console.WriteLine($"Surname: {user.Surname}"); Console.WriteLine($"Email: {emailAddress}"); // Check if business phone numbers are available if (user.BusinessPhones != null && user.BusinessPhones.Any()) { Console.Write("Business Phones: "); Console.WriteLine(string.Join(", ", user.BusinessPhones)); } else { Console.WriteLine("Business Phones: N/A"); } Console.WriteLine(); } } catch (Exception ex) { Console.WriteLine($"Error listing users: {ex.Message}"); } }
内容的提问来源于stack exchange,提问作者ThomasLDev
相关产品推荐
相关产品推荐

