Я включил API администратора и API служб каталогов.
Я указал следующие области:
https://www.googleapis.com/auth/admin.directory.user
https://www.googleapis.com/auth/admin .directory.user.readonly
https://www.googleapis.com/auth/admin.directory.group
https://www .googleapis.com/auth/admin.directory.group.member
https://www.googleapis.com/auth/admin.d ... r.readonly
https://www.googleapis.com/auth/admin.d ... p.readonly
Я указал следующие роли:
Владелец
Администратор сервисного аккаунта
Пользователь сервисного аккаунта
Я включил доступ ко всему домену Делегирование
Это мой код:
Код: Выделить всё
var groupEmail = "Group name";
var service = await GetDirectoryServiceAsync();
await ListMembersAsync(service, groupEmail);
private static async Task GetDirectoryServiceAsync()
{
string serviceAccountKeyFile = "";
string[] scopes = { DirectoryService.Scope.AdminDirectoryGroup, DirectoryService.Scope.AdminDirectoryGroupMember, DirectoryService.Scope.AdminDirectoryUser, DirectoryService.Scope.AdminDirectoryUserReadonly, DirectoryService.Scope.AdminDirectoryGroupMemberReadonly, DirectoryService.Scope.AdminDirectoryGroupReadonly} ;
var credential = GoogleCredential.FromFile(serviceAccountKeyFile).CreateScoped(scopes);
return new DirectoryService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Google Groups Manager"
}
);
}
private static async Task ListMembersAsync(DirectoryService service, string groupEmail)
{
try
{
var request = service.Members.List(groupEmail);
var response = await request.ExecuteAsync();
if (response.MembersValue == null || response.MembersValue.Count == 0)
{
Console.WriteLine("No members found.");
return;
}
// Print each member's email
foreach (var member in response.MembersValue)
{
Console.WriteLine($"- {member.Email}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error listing members: {ex.Message}");
}
}
Я также пробовал:
Код: Выделить всё
var credential = GoogleCredential.FromFile(serviceAccountKeyFile).CreateScoped(scopes).CreateWithUser("account with admin privledges");
"Клиент не имеет права получать токены доступа с помощью этого метода, или клиент не авторизован ни для одной из запрошенных областей".Любая помощь приветствуется. Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/789 ... rvices-api