簡體   English   中英

C#:Google.Apis.Auth.OAuth2.Responses.TokenResponseException:錯誤:“ invalid_client”,說明:“找不到OAuth客戶端。”,Uri:“”

[英]C#: Google.Apis.Auth.OAuth2.Responses.TokenResponseException: Error:“invalid_client”, Description:“The OAuth client was not found.”, Uri:“”

我正在嘗試將Google日歷集成到我的Web應用程序中。 我已經成功集成了Google日歷,並且能夠從我的Visual Studio IIS Express服務器讀取事件。 但是,當我在Web服務器上發布和上傳應用程序時,我開始收到錯誤消息

Google.Apis.Auth.OAuth2.Responses.TokenResponseException:錯誤:“ invalid_client”,說明:“找不到OAuth客戶端。”,Uri:“”

我的密碼

var certificate = new X509Certificate2(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/key.p12"), "notasecret", X509KeyStorageFlags.Exportable);

        ServiceAccountCredential credential = new ServiceAccountCredential(
          new ServiceAccountCredential.Initializer(/*My Service Account */)
          {
              Scopes = new string[] { CalendarService.Scope.Calendar }
          }.FromCertificate(certificate));

        // Create Google Calendar API service.
        var service = new CalendarService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "Test",
        });

            EventsResource.ListRequest request = service.Events.List("primary");
            request.TimeMin = DateTime.Now;
            request.ShowDeleted = false;
            request.SingleEvents = true;
            request.MaxResults = 10;
            request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;

            // List events.
            Events events = request.Execute();

我已經通過使用.JSON密鑰而不是.P12密鑰解決了我的問題。

我已經從Google API控制台下載了新的.JSON密鑰。 並像下面這樣更改一點代碼。

GoogleCredential credential;
            using (var stream = new FileStream(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/key.json"), FileMode.Open, FileAccess.Read))
            {
                credential = GoogleCredential.FromStream(stream)
                     .CreateScoped(new string[] { CalendarService.Scope.Calendar });
            }

    // Create Google Calendar API service.
    var service = new CalendarService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "Test",
    });

        EventsResource.ListRequest request = service.Events.List("primary");
        request.TimeMin = DateTime.Now;
        request.ShowDeleted = false;
        request.SingleEvents = true;
        request.MaxResults = 10;
        request.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;

        // List events.
        Events events = request.Execute();

有關更多詳細信息,請訪問評論部分的鏈接。 謝謝DaImTo。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM