Как получить доступ к календарю пользователей домена, используя сервисную учетную запись в .net?

Я использую служебную учетную запись с сертификатом key.p12 для доступа к API календаря Google. Однако он не может получить доступ к календарю любого пользователя в домене. Я выполнил шаги, чтобы делегировать общедоменные полномочия учетной записи службы.https://developers.google.com/accounts/docs/OAuth2ServiceAccount

У него нет примера кода для .net. И, похоже, я получаю ServiceAccountCredential только в клиентской библиотеке Google .net. Вот мой код

    static void Main(string[] args)
    {
        string serviceAccountEmail = "[email protected]";
        var certificate = new X509Certificate2(@"clientPrivateKey.p12", "notasecret",  X509KeyStorageFlags.Exportable);

        Console.WriteLine("service account: {0}", serviceAccountEmail);

        ServiceAccountCredential credential = new ServiceAccountCredential(new
        ServiceAccountCredential.Initializer(serviceAccountEmail)
        {
            Scopes = new[] { CalendarService.Scope.Calendar }
        }.FromCertificate(certificate));

        BaseClientService.Initializer initializer = new  BaseClientService.Initializer();            

        initializer.HttpClientInitializer = credential;           
        initializer.ApplicationName = "Google Calendar Sample";
        CalendarService calservice = new CalendarService(initializer);

        // list all the calendars it can see
        try
        {
            var list = calservice.CalendarList.List().Execute();

            if (list.Items.Count > 0)
            {
                foreach(var item in list.Items)
                {
                    Console.WriteLine("Found calendar for account {0}", item.Id);
                }
            }
            else
            {
                Console.WriteLine("Calendar list for this service account is empty");
            }
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

Список календаря всегда пуст. Если я вручную поделюсь своим календарем учетной записи домена с этой учетной записью службы в настройках календаря, то этот код вернет календарь моей учетной записи домена успешно.

Есть ли способ заставить эту учетную запись службы получать доступ ко всему календарю пользователя в домене?

Ответы на вопрос(2)

Ваш ответ на вопрос