.Request() не работает на C# с Azure AD B2CC#

Место общения программистов C#
Ответить
Anonymous
 .Request() не работает на C# с Azure AD B2C

Сообщение Anonymous »

У меня есть приложение администратора, написанное на C# с расширением Microsoft.Graph.Beta, и оно использует .Request(), чтобы разрешить просмотр и поиск пользователей из B2C. У меня есть отдельное приложение, которое использует новые Microsoft Graph 5.52.0 и Azure.Identity, которые можно использовать для добавления и обновления пользователей в B2C с помощью метода Users.PostAsync. Поскольку это более безопасное приложение, мне нужно перенести функции первого приложения, но новый Graph, похоже, сделал .Request() избыточным, который является единственным известным мне методом получения данных из B2C.
Вот код просмотра из первого приложения -

Код: Выделить всё

 public static async Task ListUsers(GraphServiceClient graphClient)
{
Console.WriteLine("Getting list of users...");

// Get all users (one page)
var result = await graphClient.Users
.Request()
.Select(e => new
{
e.DisplayName,
e.Id,
e.Identities,
e.BusinessPhones
})
.GetAsync();

// Calculate maximum lengths
int maxDisplayNameLength = result.CurrentPage.Max(u => u.DisplayName.Length);
int maxIdLength = result.CurrentPage.Max(u => u.Id.Length);
int maxEmailLength = result.CurrentPage
.Where(u => u.Identities.Any(i => i.SignInType == "emailAddress")) // Filter users with email addresses
.Select(u => u.Identities.FirstOrDefault(i => i.SignInType == "emailAddress")?.IssuerAssignedId)
.Where(email => email != null)
.Max(email => email.Length);

bool isFirst = true;

foreach (var user in result.CurrentPage)
{
// Get email if available
string email = user.Identities.FirstOrDefault(i => i.SignInType == "emailAddress")?.IssuerAssignedId;

// If user has no email, skip to the next iteration
if (email == null)
continue;

// Get phone numbers
string phoneNumbers = string.Join(", ", user.BusinessPhones);

if (isFirst)
{
Console.WriteLine("------------------------");
isFirst = false;
}

// Format output with alignment based on maximum lengths
Console.WriteLine($"DisplayName: {user.DisplayName.PadRight(maxDisplayNameLength)}");
Console.WriteLine($"Id: {user.Id.PadRight(maxIdLength)}");
Console.WriteLine($"Email: {email?.PadRight(maxEmailLength) ?? string.Empty}");
Console.WriteLine($"Phone Numbers: {phoneNumbers}"); // Display phone numbers
Console.WriteLine("------------------------"); // Add a line separator
}
}

Это работает безупречно в старой версии Graph, но мне нужно перенести его в новое приложение по соображениям безопасности. Ниже представлена ​​попытка реализовать ту же логику в новом приложении. Если ее запустить, вы заметите, что она выдает ошибки, связанные с .Request() -

Код: Выделить всё

`static async Task ListUsers()
{
var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "...";
var clientId = "...";
var clientSecret = "...";

var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

try
{
// Retrieve users from Microsoft Graph
var users = await graphClient.Users.Request().GetAsync();

// Display user details
foreach (var user in users)
{
Console.WriteLine($"Display Name: {user.DisplayName}");
Console.WriteLine($"Given Name: {user.GivenName}");
Console.WriteLine($"Surname: {user.Surname}");
Console.WriteLine($"Email Address: {user.Mail}");
Console.WriteLine($"Business Phone Number: {user.BusinessPhones?[0]}");
Console.WriteLine();
}
}
catch (Exception ex)
{
Console.WriteLine($"Error listing users: {ex.Message}");
}
}`
Есть ли в современном Graph новый метод, который заменит это?

Подробнее здесь: https://stackoverflow.com/questions/784 ... ure-ad-b2c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»