0

대부분의 Google 관리 API는 서비스 계정에 사용하도록 설정된 것 같습니다. 예를 들어, 난과 같이 일정을 검색 할 수 있습니다서비스 계정에 대해 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 = "[email protected]"; 
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("[email protected]").Fetch(); 

그러나, GroupssettingsService에서 동일한 코드는 503 반환 - 사용할 수 없음 서버. 해당 서비스 계정을 해당 API와 함께 사용할 수 없다는 의미입니까? 가능성이 관련된 문제에

는 그룹 설정 서비스의 범위는 apps.groups.settings 것 같다하지만

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

를 호출하면 ... 당신이 포함 된 기간 않고, 대신 appsgroupssettings를 얻을.

GroupsetstingsService에 서비스 계정을 사용하는 다른 방법이 있습니까? 또는 올바른 범위 문자열에 대한 정보가 있습니까?

감사합니다.

답변

1

왜 서비스 계정을 사용해야합니까? 당신은 슈퍼 관리자 사용자 Google 애플리케이션에서 인증 토큰을 얻기 위해 일반의 OAuth 2.0 인증을 흐름을 사용하고 사용할 수 :

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

+2

글쎄, 당신은 서비스 계정을 가장 원하는 것 같은 이유 - 수 있도록 저장된 자격 증명을 사용하여 업데이트를 수행하는 신뢰할 수있는 백엔드 애플리케이션이 사용자 수준을 넘어서고 있습니다. 이 경우 일부 비 슈퍼 유저는 전자 우편 그룹을 정의 할 수 있습니다. 앱은 GData 그룹 API를 사용하여 그룹을 만들고 채 웁니다. 이상적으로는, 사용자가 끌 수 없도록하려는 특정 정책 설정 (예 : 중재)을 만들기 위해 Groupsettings API를 사용하는 것이 이상적입니다. –

+0

서비스 계정만으로 사용할 실제 Google Apps 사용자를 만들면됩니다. 그것은 물론 $ 50/year를 의미하지만, 그렇게 나쁜 생각을해서는 안됩니다. 사용자는 최고 관리자 여야하지만 OAuth2 토큰은 그룹 설정 API로만 범위가 지정되므로 액세스가 최소화됩니다. –

+0

우리 (교육)는 무료이지만, 여전히 3 발 인증을 필요로합니다. 내가 잘못 이해하지 않는다면 (그리고 기꺼이 하겠지만) "서비스 계정"은 새로운 Google Apps API가 2-legged 권한을 수용하는 방법입니다. 그래서 2LO 액세스 코드를 썼지 만,이 특정 API (Groupssettings)는 이러한 요청을 필터링하는 것으로 보입니다. –

관련 문제