Получение запрета на использование API служб каталогов GoogleC#

Место общения программистов C#
Anonymous
Получение запрета на использование API служб каталогов Google

Сообщение Anonymous »

Мне постоянно выдается сообщение «Запрещено» при попытке доступа к API служб каталогов Google. Я пытаюсь получить доступ через учетную запись службы.
Я включил 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

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