ほとんどの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にサービスアカウントを使用する別の方法はありますか?または、正しいスコープ文字列に関する情報はありますか?
どうもありがとう。