Google Calendar API - 使用服务帐户停止活动

时间:2016-09-29 20:04:36

标签: google-api google-calendar-api google-apps google-api-dotnet-client service-accounts

自9月19日星期一起,我们使用服务帐户执行的应用程序从其他帐户中的日历中检索所有事件,无理由停止工作。该服务帐户位于Google for Work管理的公司域下。我们正在尝试访问由其他用户管理的CalendarId,并使用.Net中的服务器端库Google.Apis.Calendar.*在我们的网站上显示它们。它持续运作良好,因为它已经有近两个月的时间了,突然停止工作,显示出这个[NOT_FOUND错误 - > http://i.stack.imgur.com/oVAhp.png]执行请求时request.Execute();

public class GCalendarService : Service
{

    public GCalendarService(X509Certificate2 certificate, String accountName, String appName) : base(certificate, accountName, appName)
    {
        this.Scopes = new string[] {
            CalendarService.Scope.Calendar, // Manage your calendars
            CalendarService.Scope.CalendarReadonly // View your Calendars
        };
        this.InitializeCredential(certificate);
        this.GService = new CalendarService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = this.Credential,
            ApplicationName = appName
        });
    }

    /// <summary>
    /// Gets all the events based on a period of time
    /// </summary>
    /// <param name="calendarId">The ID of the calendar to get the events</param>
    /// <param name="minDate">The minimun date to request</param>
    /// <param name="maxDate">The max date to request</param>
    /// <param name="maxEvents">The max amount of events to retrieve</param>
    /// <returns></returns>
    public Object GetEvents(string calendarId, DateTime? minDate, DateTime? maxDate, int maxEvents) 
    {
        EventsResource.ListRequest request = ((CalendarService)this.GService).Events.List(calendarId);
        request.TimeMin = DateTime.Now;
        request.ShowDeleted = false;
        request.SingleEvents = true;
        request.MaxResults = maxEvents;
        request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
        return request.Execute();
    }

域帐户的Apps管理员是否有一些更新,谷歌方面的一些新配置?因为我们没有改变任何事情。 这是我们做过的一些测试:

  1. 使用公司电子邮件创建新日历(使用不同的公司电子邮件制作)并使用&#34;查看详细信息&#34;使用服务帐户的权限 - &gt; DIDNT WORK
  2. 使用我的个人Gmail帐户创建新日历,并使用&#34;查看详细信息&#34;使用服务帐户的权限 - &gt;保护正常工作
  3. 使用&#34;查看详细信息&#34;分享主帐户或默认帐户日历。使用服务帐户的权限 - &gt;保护正常工作
  4. 重要提示:日历ID是正确的,服务帐户凭证和日历许可是太多了,我已经证明了这一点,它确实从日历ID中获取了事件。帮助者google已经在开发者网站中访问他们的终端。此域中的任何帐户都可以访问此日历。 Here is a screenshot of the calendar share settings。我们还尝试创建新的服务帐户和新日历。 如果有人有任何想法我会非常感激,我会非常感激,我已经做了很多研究似乎没有什么解决方案。

0 个答案:

没有答案