Google Directory API:未获得授权

时间:2014-10-16 18:48:49

标签: .net google-api google-directory-api

显然 - 如果我错了,纠正我 - 要正确使用Google API /授权,您需要指定以“@ developer.gserviceaccount.com”结尾的服务帐户电子邮件。

但是,此帐户无权访问我要添加/列出/删除用户的域。我认为这是我的“未授权”请求的原因。

如何将此帐户的权限授予您要影响的域名更改为?或者 - 我是否应该在授权期间列出其他帐户?如果是这样,我该怎么做 - 因为当我指定 具有权限的域帐户时,我得到“invalid_grant”。

任何帮助将不胜感激。谢谢。

这是代码:

        String szDomainName = "testdomainname.com";
        String szServiceAccount = "google_generated_user@developer.gserviceaccount.com";

        var certificate = new X509Certificate2(@"Google_Key.p12", "notasecret", X509KeyStorageFlags.Exportable);

        ServiceAccountCredential.Initializer ServiceAccountCredentialInitializer = new ServiceAccountCredential.Initializer(szServiceAccount);
        ServiceAccountCredentialInitializer.FromCertificate(certificate);
        ServiceAccountCredentialInitializer.Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser };

        ServiceAccountCredential credential = new ServiceAccountCredential(ServiceAccountCredentialInitializer);

        // Create the service.
        BaseClientService.Initializer ServiceInitializer = new BaseClientService.Initializer();
        ServiceInitializer.HttpClientInitializer = credential;
        ServiceInitializer.ApplicationName = "List Users";
        var service = new DirectoryService(ServiceInitializer);

        var listReq = service.Users.List();
        listReq.Domain = szDomainName;

1 个答案:

答案 0 :(得分:0)

您仍需要设置您将代表的行动的服务帐户用户。即使您使用的是服务帐户,仍然需要设置服务帐户用户,即您代表的域中的人员。

您可以在'其他'中看到此示例。节。
https://developers.google.com/accounts/docs/OAuth2ServiceAccount#jwtsample_java

.setServiceAccountUser("user@example.com")行。