使用服务帐户 + 模拟检索 Google 日历条目时出现以下错误:
错误:“access_denied”,描述:“”,Uri:“”
我可以使用用户和服务帐户流创建事件(无模拟)。我可以使用用户和服务帐户流(有和没有模拟)检索日历。我可以仅使用用户流检索日历事件。
在一个相关的问题上,我注意到使用 oAuth2 用户流返回的事件包括我不是与会者的事件,所以我不清楚模拟是否应该将返回的事件过滤到我是与会者的事件。
这是服务帐户+模拟代码:
string serviceAccountEmail = "...@developer.gserviceaccount.com";
var certificate = new X509Certificate2(Server.MapPath("~") + @"\bin\key.p12", "notasecret",
X509KeyStorageFlags.Exportable);
ServiceAccountCredential credential = new ServiceAccountCredential(new
ServiceAccountCredential.Initializer(serviceAccountEmail)
{ Scopes = new[] { CalendarService.Scope.Calendar }, User="my email here" }.FromCertificate
(certificate));
BaseClientService.Initializer initializer = new BaseClientService.Initializer();
initializer.HttpClientInitializer = credential;
initializer.ApplicationName = "Google Calendar Sample";
service = new CalendarService(initializer);
IList list = service.CalendarList.List().Execute().Items; // throws error
foreach (CalendarListEntry calendar in list)
DisplayFirstCalendarEvents(calendar);
直接获取日历也会引发相同的错误:
Calendar cal1 = service.Calendars.Get("my personal calendar id").Execute(); //throws same error