API Календаря Google с Ap.net c # - PullRequest
0 голосов
/ 14 мая 2019

Я создаю один проект с веб-формой asp.net для вызова API календаря Google, а также для вставки и обновления событий в календаре Google. Мой код прекрасно работает на сервере разработки, но я сталкиваюсь с проблемой, когда я размещаюсь в IIS. Проблема связана с токеном доступа и авторизацией в IIS.

Согласно консоли Google, я знаю, что сначала мне нужно авторизоваться, а затем обменять код на токен.

Я делюсь кодом ниже

public void ImportGoogleEvents(string EventSummary, string EventLocation, string EventDescription, DateTime EventStartDateTime, DateTime EventEndDateTime, string CustomCalenderName, [Optional] string StartDatetimeZone, [Optional] string EndDatetimeZone, [Optional] string attachmentsfileUrl)
{
    ClientSecrets secrets = new ClientSecrets()
    {
        ClientId = clientId,
        ClientSecret = clientSecret
    };

  var valid_token = "VALID TOKEN HERE";  //  This i got from Google PlayGround and it works fine but when i close Google Playground or Token Expires it starts generating error.

    var token = new Google.Apis.Auth.OAuth2.Responses.TokenResponse()
    {
        AccessToken = valid_token,
        ExpiresInSeconds = 3600,
        IssuedUtc = DateTime.Now
    };

    var apiFlow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
    {
        ClientSecrets = new ClientSecrets
        {
            ClientId = clientId,
            ClientSecret = clientSecret
        }
    });

    UserCredential credential = new UserCredential(apiFlow, "User Id here", token);
    bool success = credential.RefreshTokenAsync(CancellationToken.None).Result;

    token = credential.Token;

    if (credential != null)
    {
        var calendarService = new Google.Apis.Calendar.v3.CalendarService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName
        }
        );

        if (calendarService != null)
        {
            var list = calendarService.CalendarList.List().Execute();
            var listcnt = list.Items;
            var calendar = list.Items.SingleOrDefault(c => c.Summary == CustomCalenderName.Trim());
            if (calendar != null)
            {
                Google.Apis.Calendar.v3.Data.Event calendarEvent = new Google.Apis.Calendar.v3.Data.Event();

                calendarEvent.Summary = EventSummary;
                calendarEvent.Location = EventLocation;
                calendarEvent.Description = EventDescription;

                calendarEvent.Start = new Google.Apis.Calendar.v3.Data.EventDateTime
                {
                    DateTime = EventStartDateTime /*new DateTime(StartDate.Year, StartDate.Month, StartDate.Day, StartDate.Hour, StartDate.Minute, StartDate.Second)*/,
                    TimeZone = StartDatetimeZone
                };
                calendarEvent.End = new Google.Apis.Calendar.v3.Data.EventDateTime
                {
                    DateTime = EventEndDateTime /*new DateTime(EndDate.Year, EndDate.Month, EndDate.Day, EndDate.Hour, EndDate.Minute, EndDate.Second)*/,
                    TimeZone = EndDatetimeZone
                };
                calendarEvent.Recurrence = new List<string>();

                var newEventRequest = calendarService.Events.Insert(calendarEvent, calendar.Id);
                var eventResult = newEventRequest.Execute();

            }
        }
    }
}

Я ищу код для получения действительного токена, также, если токен истек код для получения нового токена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...