2015-11-09 3 views
1

Выполнение кода ниже никогда не возвращается из функции Execute. У меня есть собственный календарь на моей личной учетной записи gmail, который я поделился с учетной записью developer.gserviceaccount.com.API календаря Google - не возвращается с выполнения() C#

Глядя на диспетчер API, показ использования/кавычек, который я использовал или даже ударил по api.

Любые мысли оценили.

using System.Security.Cryptography.X509Certificates; 
using System.Web; 
using Google.Apis.Calendar.v3; 
using Google.Apis.Auth.OAuth2; 
using Google.Apis.Services; 

public class GoogleLoginWithServiceAccount 
{ 
    public string getEventList() 
    { 
     var GoogleOAuth2CertificatePath = HttpContext.Current.Server.MapPath("~/xx/xx.p12"); 
     var GoogleOAuth2EmailAddress = "[email protected]"; 
     var GoogleOAuth2PrivateKey = "notasecret"; 

     var certificate = new X509Certificate2(GoogleOAuth2CertificatePath, 
     GoogleOAuth2PrivateKey, X509KeyStorageFlags.Exportable); 
     var credential = new ServiceAccountCredential(
      new ServiceAccountCredential.Initializer(GoogleOAuth2EmailAddress) 
      { 
       //User = GoogleAccount, 
       Scopes = new string[] { CalendarService.Scope.Calendar } 
      }.FromCertificate(certificate)); 

     // Create the service. 
     var service = new CalendarService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = credential, 
      ApplicationName = "Testing" 
     }); 
     var listRequest = service.CalendarList.List(); 

     return listRequest.Execute().ToString();   
    }  
} 

Я все еще сталкиваюсь с этой проблемой. Я создал простое приложение, чтобы воспроизвести это, у кого-нибудь есть мысли? dropbox.com/s/g45xcta7ii3hj51/GoogleTestWeb.zip?dl=0

ответ

1

Проблема описана более подробно в https://github.com/google/google-api-dotnet-client/issues/606. Похоже, что в настоящее время у нас есть ошибка в 1.9.3, которая исправлена ​​в репозитории github (само исправление находится в https://github.com/google/google-api-dotnet-client/pull/612).

Новый релиз планируется в ближайшие несколько недель, поэтому следите за обновлениями; http://google-api-dotnet-client.blogspot.com/.

Если вы хотите играть и тестировать его самостоятельно, вы можете использовать проекты в GitHub с помощью службы календаря. Вам лучше загрузить службу календаря с https://developers.google.com/resources/api-libraries/download/calendar/v3/csharp, чтобы избежать связывания переадресаций. Я объяснил, что вы должны делать в # 606.


Update (15 декабря): Новый NuGet пакеты для 1.10.0 доступны, прочитать об этом по адресу: http://google-api-dotnet-client.blogspot.com/2015/12/announcing-release-of-1100.html

0

Существует разница между календарем и календарем. В календаре календаря Google в левой части экрана отображается список календарей. Однако для отображения календаря в календаре он должен быть добавлен в список календарей.

Вы предоставили доступ к календарю вашей учетной записи службы, но вы программным образом сказали ей добавить календарь в свой список календарей? Вы должны были использовать CalendarList: insert

Я не уверен, почему вы хотите получить список календарей. Лично я думаю, вы должны просто пойти с Calendars: get, вы уже знаете идентификатор календаря с веб-сайта календаря Google.

Совет: Выполнение возвратит объект, который я не уверен. ToString() - это действительно лучшая идея.

код обновления:

/// <summary> 
     /// Returns metadata for a calendar. 
     /// Documentation:https://developers.google.com/google-apps/calendar/v3/reference/calendars/get 
     /// </summary> 
     /// <param name="service">Valid Autenticated Calendar service</param> 
     /// <param name="id">Calendar identifier.</param> 
     /// <returns>Calendar resorce: https://developers.google.com/google-apps/calendar/v3/reference/calendars#resource </returns> 
     public static Calendar get(CalendarService service, string id) 
     { 
      try 
      { 
       return service.Calendars.Get(id).Execute(); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine(ex.Message); 
       return null; 
      } 
     } 

код из моего примера проекта на GitHub

enter image description here

+0

Я изменил последние 2 строки моего кода «вар calRequest = service.Calendars.Get ("[email protected]"); return calRequest.Execute(); ' но все равно ничего не возвращает из Execute() Я предположил, что он выдает ошибку или если ему нечего возвращать, он возвращает null. По крайней мере, тайм-аут в какой-то момент, но он никогда не возвращается – Anthony

+0

. d – DaImTo

+0

Я скопировал вашу функцию get в свой проект, но ничего не получил. Имеет ли значение, что мой проект - asp.net website и получить вызов из веб-службы asmx? Запустив сайт, окно вывода в Visual Studio получает Поток '' (0x42f0) вышел с кодом 0 (0x0). Поток '' (0x24f8) вышел с кодом 0 (0x0). Поток '' (0x115c) вышел с кодом 0 (0x0). Поток '' (0x2078) вышел с кодом 0 (0x0). , и он постоянно растет с этим сообщением, пока он работает – Anthony