1

ほとんどのGoogle管理APIはサービスアカウントで有効になっているようです。たとえば、次のようにカレンダーを取得できます。

string scope = Google.Apis.Calendar.v3.CalendarService.Scopes.Calendar.ToString().ToLower();
string scope_url = "https://www.googleapis.com/auth/" + scope;
string client_id = "999...@developer.gserviceaccount.com";
string key_file = @"\path\to\my-privatekey.p12";
string key_pass = "notasecret";

AuthorizationServerDescription desc = GoogleAuthenticationServer.Description;
X509Certificate2 key = new X509Certificate2(key_file, key_pass, X509KeyStorageFlags.Exportable);

AssertionFlowClient client = new AssertionFlowClient(desc, key) { ServiceAccountId = client_id, Scope = scope_url };
OAuth2Authenticator<AssertionFlowClient> auth = new OAuth2Authenticator<AssertionFlowClient>(client, AssertionFlowClient.GetState);

CalendarService service = new CalendarService(auth);
var x = service.Calendars.Get("calendarID@mydomain.com").Fetch();

ただし、GroupssettingsServiceの同じコードは、503 --ServerNotAvailableを返します。それは、サービスアカウントをそのAPIで使用できないことを意味しますか?

おそらく関連する問題では、グループ設定サービスの範囲はそうapps.groups.settingsですが、あなたが電話した場合

GroupssettingsService.Scopes.AppsGroupsSettings.ToString().ToLower();

...appsgroupssettings代わりに、ピリオドが埋め込まれていません。

GroupssettingsServiceにサービスアカウントを使用する別の方法はありますか?または、正しいスコープ文字列に関する情報はありますか?

どうもありがとう。

4

2 に答える 2

1

なぜこれにサービスアカウントを使用する必要があるのですか?通常のOAuth2.0認証フローを使用して、Google Appsスーパー管理者ユーザーから認証トークンを取得し、それを使用できます。

https://developers.google.com/accounts/docs/OAuth2InstalledApp

于 2012-12-09T21:24:17.123 に答える
1

私はこのスレッドと、しばらくしてドキュメントの最も重要な部分を見つけました。他の人が将来時間を無駄にしないように投稿します。

Your application must use OAuth 2.0 to authorize requests. No other authorization protocols are supported. If your application uses Google Sign-In, some aspects of authorization are handled for you.

ドキュメントの「承認プロトコルについて」セクションを参照してください

于 2021-01-17T02:36:31.807 に答える