Получение "Недостаточно прав [403]" при попытке добавить участника в группу Google (API служб каталогов, .Net)

Получайте недостаточное разрешение [403] при попытке добавить участника в группу с помощью API служб каталогов Google в.Net.

* У нас настроен домен Google.
* Пользователь xxxxx является администратором домена.
* Я вошел как пользователь xxxxx в консоль администратора и создал учетную запись службы.

* Взял связанный / сгенерированный Google ClientID для этой учетной записи службы и дал ему следующие области:

https://www.googleapis.com/auth/admin.directory.group
https://www.googleapis.com/auth/admin.directory.group.member
https://www.googleapis.com/auth/admin.directory.user

* Группа является созданной группой в нашем домене. Это действительная группа. Я могу вручную добавлять / удалять пользователей из него.
* Пользователь xxxxx является владельцем и членом группы.
* Пользователь, которого я пытаюсь добавить, является действующей учетной записью в нашем домене.
* Учетная запись xxxxx и учетная запись службы настроены и работают таким образом, что я могу без проблем создавать пользователей в нашем домене, используя API служб каталогов Google. (Т.е. Admin SDK уже включен и т. Д.).

Фрагмент кода, который я использую, чтобы попытаться добавить пользователя в группу, довольно прост:

GroupsResource.GetRequest grGet = m_service.Groups.Get("TestGroup@OurGoogleDomain.com");//Existing group
string szGroupID = grGet.GroupKey;
Member userMember = new Member();    
userMember.Email = "u.test1923@OurGoogleDomain.com";//Existing user
userMember.Role = "MEMBER";
m_service.Members.Insert(userMember, szGroupID).Execute();

Я что-то упустил в коде? Есть ли какие-то настройки специально для групп Google, которые мне нужно установить, но о которых я не знаю? Любая помощь будет оценена! Спасибо!

1 ответ

Я проверил ваш код со следующим объявлением сервиса, и он работал гладко.

String serviceAccountEmail = "Enter your service account email";
        var certificate = new X509Certificate2("GoogleDirectoryManager-xxxxxxxxxx.p12", "Enter your Key", X509KeyStorageFlags.Exportable);

        ServiceAccountCredential credential = new ServiceAccountCredential(
        new ServiceAccountCredential.Initializer(serviceAccountEmail)
        {
            User = "Enter an Admin Email for the Domain",

            Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser, DirectoryService.Scope.AdminDirectoryGroupMember }
        }.FromCertificate(certificate));

Возможно, вам потребуется указать правильную область действия и / или учетную запись службы, связанную с вашей учетной записью службы API Google, которая авторизована для доступа клиента API домена.

Другие вопросы по тегам