我想知道如何检索特定用户的所有共享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用户的电子邮件以获取日历列表?
答案 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