Получение "Недостаточно прав [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 домена.