2017-07-25 77 views
0

你好事件,谷歌日曆API V3 asp.net代碼200,但沒有插入

我目前正在建設中的asp.net核心預約取景器。訪問日曆時,我設法得到了一個代碼200。

但是,我想發送的事件不是由Google日曆保存的。控制檯儀表板顯示它已收到。帳戶中只有一個日曆。

我迄今爲止代碼:

public void InsertIntoCalendar() 
    { 
     var Cal = new CalendarEvents(); 
     var newEvent = Cal.CreateEvent("TestEvent", "RandomLocation", "Description", "2017-07-28"); 
     var service = CreateService(); 

     service.Events.Insert(newEvent, serviceAccountEmail).Execute(); 

      String calendarId = "primary"; 
      EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarId); 
      Event createdEvent = request.Execute(); 
    } 

CalendarEvents是可以被幾種方法創建一個事件類。 我嘗試過使用Event類本身,但結果是一樣的。

業務創建這樣的:

 private CalendarService CreateService() 
    { 
     string keyFilePath = "random.p12; 

     var certificate = new X509Certificate2(keyFilePath, "notasecret", X509KeyStorageFlags.Exportable); 

     ServiceAccountCredential credential = new ServiceAccountCredential(
      new ServiceAccountCredential.Initializer(serviceAccountEmail) 
      { 
       Scopes = Scopes 
      }.FromCertificate(certificate)); 

     // Create the service. 
     CalendarService service = new CalendarService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = credential, 
      //ApplicationName = "ShowCase", 
     }); 

     return service; 
    } 

在CSHTML頁,我這樣做剃刀:

  CalendarConnection TestConnection = new CalendarConnection(); 
      TestConnection.InsertIntoCalendar();  

我得到一個代碼200,但該事件不insterted成日曆。我讀過關於這個的perl文章,但是我無法做任何事情。

我在做什麼錯?

預先感謝您。

編輯: 當我打電話events.list從一個控制檯應用程序,我可以看到的事件:

TEST(2017年7月26日20時58分08秒)

TEST(2017年7月26日20: 58:57)

TEST(2017年7月26日21時03分38秒)

TEST(2017年7月26日21時05分27秒)

爲什麼我沒有看到他們在日曆嗎?

回答

0

我發現了錯誤。

問題不是我的代碼實際上。

首先,如果您使用「主要」作爲日曆ID,它不知何故不是我帳戶的日曆ID。您可以從中獲取事件,但它不會顯示在您的日曆中。一位同事建議它是一種沙盒日曆(或一個bug)。

後,我進入了日曆ID從賬戶(無論是電子郵件地址,您的主要或您在日曆設置中找到一個地址),我得到了這是由不共享導致錯誤403

帶有服務帳戶地址的日曆(Google創建服務帳戶時創建的一個安裝程序,通常爲[email protected]。COM)

所以,如果你想通過谷歌日曆創建活動:

  1. https://console.developers.google.com

  2. 共享創建服務帳戶與服務帳戶的電子郵件地址,您的日曆。

  3. 使用上述(一個使用的client_secrets.json或一個)代碼

注:這並不總是你的代碼,但缺少一些管理工作。

代碼在這裏:

public void InsertIntoCalendar() 
{ 
    var Cal = new CalendarEvents(); 
    var newEvent = Cal.CreateEvent("TestEvent", "RandomLocation", "Description", "2017-07-28"); 
    var service = CreateService(); 

    service.Events.Insert(newEvent, serviceAccountEmail).Execute(); 

     String calendarId = "[email protected]"; // or the e-mail address of the Google account if you want to use the primary calendar 
     EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarId); 
     Event createdEvent = request.Execute(); 
}