0

使用服务帐户 + 模拟检索 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
4

1 回答 1

0

我们的日历 API 团队检查了那个,他们发现了以下内容:

  1. 您尝试使用服务帐户 628725648769-cda....3djjj@developer.gserviceaccount.com 访问 lbl.gov_7d...7oag@group.calendar.google.com 的事件。我对么?看起来您在 12 日使用该服务帐户执行了成功的事件插入操作。

  2. 没有从该帐户发送到该日历的失败请求。

  3. 但是,该服务帐户也在 12 日访问了 lbl.gov_oe10h .....un9c@group.calendar.google.com,一开始,操作返回 404,后返回 200(可能有人同时更改了此日历的 ACL ?)。

有什么意义吗?

于 2013-11-15T14:14:01.767 回答