【问题标题】:Google Calendar Event Not Showing in CalendarGoogle 日历活动未显示在日历中
【发布时间】:2019-09-10 11:57:06
【问题描述】:

我们在 Google 中创建了一个服务帐户,并使用 Calendar API 来添加事件,之前它工作正常,谷歌停止该帐户并重新激活它后,它没有工作

我们已经尝试了新的服务帐户并逐行调试我们的代码,没有错误,并且还返回创建的事件但未显示在日历中

        CalendarService service = null;
        var serviceAccountCredentialFilePath = 
        Path.Combine(AppDomain.CurrentDomain.BaseDirectory, 
        "ServiceAccount_Key.json");
        if (Path.GetExtension(serviceAccountCredentialFilePath).ToLower() 
        == ".json")
        {
            GoogleCredential credential;

            string[] scopes = new string[] {
                CalendarService.Scope.Calendar, // Manage your calendars
                CalendarService.Scope.CalendarReadonly // View your Calendars
             };
            using (var stream = new FileStream(serviceAccountCredentialFilePath, FileMode.Open, FileAccess.Read))
            {
                credential = GoogleCredential.FromStream(stream)
                     .CreateScoped(scopes);
            }
            // Create the service.
            service = new CalendarService(new BaseClientService.Initializer
            {
                HttpClientInitializer = credential,
                ApplicationName = "Esoco"
            });
        }
        // End //

        // Insert Event //
        var myEvent = new Event
        {
            Id = guid,
            //Transparency =  "OPAQUE",
            Summary = subject,
            Location = location,
            Start = new EventDateTime { TimeZone = timezone, DateTime = start },
            End = new EventDateTime { TimeZone = timezone, DateTime = end },
            Attendees = objattendees,
            Organizer = organizerdata,
            Description = summary,

        };

        myEvent.Start.DateTimeRaw = myEvent.Start.DateTimeRaw.Replace("Z", "");
        myEvent.End.DateTimeRaw = myEvent.End.DateTimeRaw.Replace("Z", "");

        //myEvent.ICalUID

        var recurringEvent = service.Events.Insert(myEvent, "primary");
        recurringEvent.SendNotifications = true;
        try
        {
            var outputofevent = recurringEvent.Execute();
            ScriptManager.RegisterClientScriptBlock(this, typeof(string), "Alertscript", "alert('"+outputofevent.Status+"')", true);
        }

预期结果在日历中插入事件显示,但实际结果未在日历中显示

【问题讨论】:

  • 你怎么知道它没有显示在日历中?你在做一个 event.list 来检查吗?
  • 请检查垃圾箱(在设置下)。可能是事件被自动取消。我也面临同样的问题。
  • @DaImTo 是的,它返回为 250
  • 然后插入事件。您是否扫描了 events.list 返回的事件以找到您所关注的事件并完成了 event.get 以查看已发送的与会者?
  • @DaImTo - 是的,所有活动在与会者中都有我的名字,我还通过活动 ID 执行了一个活动获取方法,它返回了详细信息

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


【解决方案1】:

在过去的几周里,我的团队遇到了同样的问题, 这就是我团队的解决方法。

我们的场景

  1. 我们创建了一个名为google-calendar@mycompany.iam.gserviceaccount.com 的服务帐户
  2. 我们将 1) 中的服务帐户凭据用于 Google 日历 API
  3. 在服务帐户的日历中创建一个事件,如下面的代码所示
calendar.events.insert({
  calendarId: 'primary', // it will create an event into service account's calendar
  resource: data,
  sendNotifications: true
})

我们为解决方法做了什么。

  1. 创建一个新公司的用户(比如system@mycompany.com)
  2. 与服务帐户共享system@mycompany.com 的日历
    • 然后转到“日历 > 设置 > 与特定人员共享”
    • 将google-calendar@mycompany.iam.gserviceaccount.com 添加到“对事件进行更改”
  3. 将代码从创建事件到服务帐户的日历更新为刚刚创建的用户的日历,如下所示
calendar.events.insert({
  calendarId: 'system@mycompany.com', // << we changed from 'primary' to just-created-user
  resource: data,
  sendNotifications: true
})

更改后,创建的事件将按原样显示在 Google 日历中。

希望对你有帮助

【讨论】:

    【解决方案2】:

    请记住,以下代码会将您的事件插入到服务帐户主日历中

    var recurringEvent = service.Events.Insert(myEvent, "primary");
    

    要查看这些活动,您需要创建 events.list 或邀请其他人参加活动,以便他们可以在自己的日历中查看。

    已记录错误问题。

    除此之外,目前论坛上存在关于未发送邀请的问题https://issuetracker.google.com/issues/140746812

    【讨论】:

    • 是的,我执行了 events.list 并将其获取为 250,这也是创建事件的 html 链接:google.com/calendar/…。当我打开此链接时,我在 url 中得到 could+not+find+the+requested+event...响应 url:calendar.google.com/calendar/…
    • 在与会者中邀请了我的同事电子邮件 ID.. 他们没有被邀请。
    • 查看过去几天的 Google 日历问题,每个人都遇到了没有收到邀请通知的问题。 issuetracker.google.com/issues/140746812
    • @dalmTo - 日历不会被与会者屏蔽。
    • 那到底是什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多