API настроек группы Google включен для учетных записей служб?

Кажется, что большинство API-интерфейсов управления Google включены для учетных записей служб. Например, я могу получить календари так:

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 - Сервер недоступен. Означает ли это, что учетные записи служб не могут использоваться с этим API?

В возможной связанной проблеме область Сервиса настроек групп, кажется, apps.groups.settings но если вы позвоните

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

...ты получаешь appsgroupssettings вместо этого, без вложенных периодов.

Есть ли другой способ использовать учетные записи служб для GroupssettingsService? Или какая-либо информация о правильной строке области?

Большое спасибо.

2 ответа

Решение

Зачем вам нужно использовать служебную учетную запись для этого? Вы можете использовать обычные потоки авторизации OAuth 2.0, чтобы получить токен авторизации от пользователя-администратора Google Apps и использовать его:

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

Я нашел эту ветку и самую важную часть документов через некоторое время. Пишите, чтобы другие не тратили время впустую.

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.

См. раздел документации «О протоколах авторизации».

Другие вопросы по тегам