问题描述
我正在创建一个简单的应用,该应用可以更改多个g-suite用户的假期设置。 目前,我正在为每个邮箱创建GoogleCredential和GmailService对象,如下所示:
var credentials = GoogleCredential.FromFile(FileName).CreateScoped(Scopes).CreateWithUser(User);
var gmailService = new GmailService(
new BaseClientService.Initializer()
{
ApplicationName = ApplicationName,HttpClientInitializer = credentials
});
var x = gmailService.Users.GetProfile(User);
var y = await x.ExecuteAsync();
Console.WriteLine(y.MessagesTotal);
long now = (long)DateTime.UtcNow.Subtract(
new DateTime(1970,1,DateTimeKind.Utc)
).TotalMilliseconds;
VacationSettings settings = new VacationSettings
{
EnableAutoReply = true,RestrictToDomain = false,ResponseBodyPlainText = "I'm on vacations :)",ResponseSubject = "Vacations",StartTime = now
};
UsersResource.SettingsResource.UpdateVacationRequest request = gmailService.Users.Settings.UpdateVacation(settings,"me");
var response = await request.ExecuteAsync();
上面的代码工作正常,但是我正在尝试将其用于多个邮箱。
我曾尝试在创建GoogleCredential并使用特定电子邮件而非“我”来调用API时删除CreateWithUser(User)
,例如:
var req1 = gmailService.Users.Settings.UpdateVacation(settings,"[email protected]").Execute();
var req2 = gmailService.Users.Settings.UpdateVacation(settings,"[email protected]").Execute();
但是我得到以下错误:
Google.GoogleApiException
HResult=0x80131500
Message=Google.Apis.Requests.RequestError
Precondition check failed. [400]
Errors [
Message[Precondition check failed.] Location[ - ] Reason[failedPrecondition] Domain[global]
]
所以我的服务帐户需要一些特殊的范围吗? 我在google API repo on GitHub中问了这个问题,但是建议我在这里问这个问题,以获得Gmail API小组的答案。
这有可能吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)