0
大多数Google Management 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
代替,而嵌入式时期。
是否有另一种方法使用服务帐户的GroupssettingsService?或有关正确范围字符串的任何信息?
非常感谢。
嗯,你会永远需要的服务帐户同样的原因 - 允许一个可信的后端应用程序使用存储的凭证进行更新,升级超过用户的级别。在这种情况下,一些非超级用户可以定义电子邮件组;该应用程序使用GData组API创建并填充组。理想情况下,它会使用Groupssettings API进行特定的策略设置(例如审核),我不希望用户能够关闭该设置。 –
您只需创建一个真正的Google Apps用户即可单独用作服务帐户。这当然意味着50美元/年,但这不应该考虑糟糕。用户需要成为超级管理员,但OAuth2令牌仅限于组设置API,因此访问权限最小。 –
对我们来说是免费的(教育),但这仍然需要三条腿的授权。除非我错了(我很乐意成为),否则“服务帐户”就是新的Google Apps API适用于双腿授权的方式。所以我编写了2LO访问代码,但是这个特定的API(Groupssettings)似乎将这些请求过滤掉了。 –