C #: Google.Apis.Auth.OAuth2.Responses.TokenResponseException: ошибка: «invalid_client», описание: «Клиент OAuth не найден.», Uri: «» - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь интегрировать календарь Google в свое веб-приложение.Я успешно интегрировал календарь Google и могу читать события с моего сервера Visual Studio IIS Express.Но когда я публикую и загружаю свое приложение на веб-сервер, у меня начинает появляться ошибка

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();

1 Ответ

0 голосов
/ 31 мая 2018

Я решил свою проблему, используя ключ .JSON вместо ключа .P12.

Я загрузил новый ключ .JSON из консоли Google API.и измените немного кода, как показано ниже.

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.

...