c# - 避免 Google Calendar API 在人们的日历中添加实际事件?

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

我通过服务帐户使用 Google Calendar API。想法是我们希望将其纯粹用作 API 后端,因此我们不必自己编写代码。这意味着我们希望它干扰(或者至少让它成为可选的!)人们的真实日历。

如果我发这样的 POST:

        var resultingex = service.Calendars.Insert(new Calendar()
        {
            Summary = "Nice new calendar",

        }).Execute();

        var eventIsNice = service.Events.Import(new Event()
        {
            Summary = "I'm a nice event",
            Location = "Copenhagen, Denmark",
            Start = new EventDateTime() { DateTime = DateTime.Now.AddMinutes(15) },
            End = new EventDateTime() { DateTime = DateTime.Now.AddMinutes(45) },
            Attendees = new List<EventAttendee>() { new EventAttendee() { Email = "lars@asano.dk" } },


        }, resultingex.Id).Execute();

它将添加到我的 Google 日历中。这意味着我不能将它纯粹用作后端,因为它称为我的真实日历。

所以我的问题是:如何添加仅存在于我的应用程序上下文中的事件?

这是我使用服务进行身份验证的方式:

            var credPath = "client_secret.json";

            var json = File.ReadAllText(credPath);
            var cr = JsonConvert.DeserializeObject<PersonalServiceAccountCred>(json); // "personal" service account credential

            // Create an explicit ServiceAccountCredential credential
            var xCred = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(cr.client_email)
            {
                Scopes = new[] {
                    CalendarService.Scope.Calendar,
                    CalendarService.Scope.CalendarReadonly,
        }
            }.FromPrivateKey(cr.private_key));

            var service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = xCred,
                ApplicationName = ApplicationName,
            });

最佳答案

听起来您的应用程序需要自己的日历 - 所以创建一个(请参阅 Calendars.insert 以了解如何以编程方式执行此操作)。

您是否需要为整个应用程序使用单个日历,无论用户如何(在这种情况下,您可能希望使用服务帐户身份验证,并创建与服务帐户相关联的单个日历)或每个用户一个额外的日历(在这种情况下,您将使用用户身份验证并在他们的帐户中创建另一个日历)取决于您的应用程序需求。

值得注意的是,如果您在用户帐户中创建日历,他们几乎肯定可以通过网络用户界面访问它。同样,这是否是一个问题取决于应用程序。

关于c# - 避免 Google Calendar API 在人们的日历中添加实际事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46774704/

相关文章:

c# - 需要在 Control.Invoke 期间设置多个属性

c# - Visual Studio 2019 - msvsmon.exe 意外退出。 .net core 1.1 项目的调试将中止

google-api - 无需设置结算帐户的 Google Maps Api

node.js - 在 Express.js 应用程序中存储来自 Google 日历 Node.js 示例的事件列表

c# - 使用 C# 访问公共(public) Google 日历

c# - 从 PageRenderer 隐藏 iOS 中的状态栏

c# - 我如何要求用户在 C# 中输入

ruby - 如何使用带有 Ruby Google API Client 的 Gmail API 发送消息?

c# - 是否有使用 Java、C#、Python 或 Ruby 编写的 Google Contacts API 的 Hello World 示例?

java - 谷歌日历 API。处理事件的共享扩展属性