在服务帐户中执行请求时未找到异常

时间:2016-07-01 08:53:50

标签: google-calendar-api service-accounts

使用服务帐户检索我的日历事件时出现以下错误。

任何人都可以告诉我我做错了什么。

未找到Google.Apis.Requests.RequestError [404]错误[消息[未找到]位置[ - ]原因[notFound]域[全局]]     //文件路径        string GoogleOAuth2CertificatePath = Server.MapPath(“GoogleStore \ My Project-a725fb0190fc.p12”);

 // @developer... e-mail address.
        string GoogleOAuth2EmailAddress = "939544675132-compute@developer.gserviceaccount.com";

 // certificate password ("notasecret").
        string GoogleOAuth2PrivateKey = "notasecret";


    X509Certificate2 certificate = new X509Certificate2(GoogleOAuth2CertificatePath, GoogleOAuth2PrivateKey, X509KeyStorageFlags.Exportable);

    ServiceAccountCredential credential = new ServiceAccountCredential(
            new ServiceAccountCredential.Initializer(GoogleOAuth2EmailAddress)
            {                   
                Scopes = new[] { CalendarService.Scope.Calendar }                   
            }.FromCertificate(certificate));

        // Create the service.
        service = new CalendarService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName
        });

    ListRequest request = service.Events.List(calID);          
                request.ShowDeleted = false;
                request.SingleEvents = true;              
                events = request.Execute();  

感谢您提供任何可以帮助我的答案。

1 个答案:

答案 0 :(得分:-1)

通常在遇到404: Not found时找不到指定的资源。在某些情况下可能会发生这种情况。

  • 当请求的资源从未存在时。
  • 访问用户无法访问的日历时。

根据官方Google文档,建议的操作是实施exponential backoff

Exponential backoff是网络应用程序的标准错误处理策略,其中客户端会在不断增加的时间内定期重试失败的请求。如果大量请求或繁重的网络流量导致服务器返回错误,则指数退避可能是处理这些错误的好策略。相反,它不是处理与速率限制,网络量或响应时间无关的错误的相关策略,例如无效的授权凭证或未找到文件的错误。

正确使用,指数退避可提高带宽使用效率,减少获得成功响应所需的请求数,并最大化并发环境中请求的吞吐量。

请注意,在每个请求中,您的应用程序都会发送到Google Calendar API must include an authorization令牌。该令牌还可识别您的Google应用程序。

以下是遇到404 not found错误的相关SO票证:Error 404 when creating a calendar with Google Calendar Api v3 using c# .net