0

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

1 に答える 1

0

代わりに行動するサービス アカウント ユーザーを設定する必要があります。サービス アカウントを使用している場合でも、サービス アカウント ユーザーを設定する必要があります。これは、ドメイン内で代理を務めるユーザーです。

ここの「その他」セクションで例を確認できます。
https://developers.google.com/accounts/docs/OAuth2ServiceAccount#jwtsample_java

つまり、行.setServiceAccountUser("user@example.com")

于 2014-12-01T22:14:04.100 に答える