1

尝试使用 .Net 中的 Google Directory Services API 将成员添加到组时,不断获得权限不足 [403]。

*我们设置了 Google 域。
*用户 xxxxx 是域的管理员。
*我以用户 xxxx 的身份登录到管理控制台并创建了一个服务帐户。

*为该服务帐户获取关联/生成的 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 帐户和服务帐户都已设置并正常工作,因此我可以使用 Google 目录服务 API 以编程方式在我们的域上创建用户,而不会出现任何问题。(即 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 网上论坛的设置?任何帮助,将不胜感激!谢谢!

4

1 回答 1

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));

您可能需要指定与您的 google API 服务帐户相关联的正确范围和/或服务帐户,该服务帐户在域 API 客户端访问中获得授权。

于 2015-11-24T07:39:06.707 回答