如何获取特定用户的所有公共日历?

时间:2016-04-30 12:52:32

标签: c# google-calendar-api google-api-dotnet-client

我想知道如何检索特定用户的所有共享Google日历。我是Service Account,所以我不需要请求用户许可。

实际上我在c#中使用了一个小应用程序。当我需要为特定用户电子邮件添加事件时,我会这样做:

Event myEvent = new Event
{
     Summary = "Appointment"
     Location = "Somewhere",
     ...
     Attendees = new List<EventAttendee>() 
     {
          new EventAttendee() { Email = "foo@gmail.com"}
     }
};

所以你如何看到我在email属性中传递了用户的Attendees。这允许我将约会放在特定用户的主日历中。

我想知道的是:如何为共享Google Calendar实现相同目标?通过这种方式,应用程序向用户显示电子邮件,他的公共日历列表,选择一个,我可以将事件放到指定的电子邮件和日历中。

我试着这样做:

 var calendars = service.CalendarList.List().Execute().Items;

 foreach (CalendarListEntry entry in calendars)
 {
     entry.Summary;
 }

calendars返回Count = 0,因为我没有指定任何电子邮件,所以我认为API会尝试访问我的API电子邮件,对吧?如何通过方法CalendarList告诉API用户的电子邮件以获取日历列表?

2 个答案:

答案 0 :(得分:1)

服务帐户不是虚拟帐户。您有两个选项可以授予服务帐户访问权限(只需将其分享)到您在自己的Google日历帐户中创建的日历,然后它就可以insert进入该日历,或者您可以创建新的日历。服务帐户谷歌日历帐户。

无论哪种方式,您都可以创建新活动并向其添加人员。然后,当您要添加某人时,请使用events.instert并设置通知。用户将收到一封电子邮件,并能够将其添加到自己的个人Google日历中。

跳过另一个答案推荐的calendar.list。 IMO日历列表是无用的,它只是您在Web视图中访问的日历的小列表,它是左下方的列表。如果您确实想要使用它,则必须使用calendar.list.insert添加上面创建的日历,以将其添加到服务帐户日历列表中。但就像我说的,我没有看到服务帐户的日历列表的重点。

答案 1 :(得分:0)

您可以使用Google Calendar API查找和查看公共日历活动。如果您已获得授权,您还可以访问和修改这些日历上的私人日历和活动。

要知道如何操作并查看示例代码,您可以按照Get Started with the Calendar API中提供的首选快速入门指南的说明进行操作。

并且,要按CalendarList: list获取日历列表,启用OAuth 2.0授权后,您可以使用示例格式发送带有其他参数的HTTP请求:

GET https://www.googleapis.com/calendar/v3/users/me/calendarList