Как получить записи календаря Google с помощью служебной учетной записи и .NET

Я получаю следующую ошибку при использовании учетной записи службы + олицетворение для получения записей календаря Google:

Ошибка: "access_denied", Описание: "", Uri: ""

Я могу создавать события, используя поток учетных записей пользователей и служб (без олицетворения). Я могу получать календари, используя поток учетных записей пользователей и служб (с олицетворением и без него). Я могу получать события календаря только с пользовательским потоком.

Что касается связанного с этим вопроса, я заметил, что при использовании пользовательского потока oAuth2 возвращаемые события включают в себя те, в которых я не участвую, поэтому мне неясно, должно ли олицетворение фильтровать возвращенные события только для тех, в которых я участвую.

Вот сервисный аккаунт + код олицетворения:

string serviceAccountEmail = "[email protected]";
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

person Julius Seizure    schedule 12.11.2013    source источник


Ответы (1)


Наша команда API Календаря проверила это и выяснила следующее:

  1. Вы пытались получить доступ к событиям lbl.gov_7d ... [email protected], используя сервисный аккаунт 628725648769-cda .... [email protected]. Я прав? Похоже, вы выполнили успешные операции вставки событий с использованием этой учетной записи службы 12-го числа.

  2. От этой учетной записи в этот календарь не поступают неудавшиеся запросы.

  3. Однако эта учетная запись службы также обращалась к lbl.gov_oe10h ..... [email protected] 12-го числа, и вначале операции возвращали 404, последние 200 (возможно, кто-то тем временем изменил ACL для этого календаря ?).

Имеет смысл?

person peleyal    schedule 15.11.2013