2014-01-24 2 views
6

Я получаю эту ошибку при попытке запустить мое консольное приложение C# ... Я пытаюсь вызвать google calender api v3 для получения календаря и добавления события в календарь. В соответствии с образцом кода от google-api-dotnet-client я делаю это. (https://code.google.com/p/google-api-dotnet-client/source/browse/Calendar.VB.ConsoleApp/Program.vb?repo=samples) Вот код vb.net. Я использую этот образец после преобразования его в код C#.URI перенаправления в запросе: http: // localhost: 12349/авторизовать/не совпадать с зарегистрированным URI перенаправления

Вот мой код:

class Program 
{ 
    static void Main(string[] args) 
    { 
     try 
     { 
      new Program().Run().Wait(); 
     } 
     catch (AggregateException ex) 
     { 
      foreach (var e in ex.InnerExceptions) 
      { 
       Console.WriteLine("ERROR: " + e.Message); 
      } 
     } 
    } 

    private async Task Run() 
    { 
     UserCredential credential; 
     IList<string> scopes = new List<string>(); 

     CalendarService service; 
     scopes.Add(CalendarService.Scope.Calendar); 


     using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read)) 
     { 
      // problem occuring during executing this statement. 
      credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
       GoogleClientSecrets.Load(stream).Secrets, 
       scopes, 
       "user", CancellationToken.None, new FileDataStore("Calender.SampleApp")); 
     } 

     BaseClientService.Initializer initializer = new BaseClientService.Initializer(); 
     initializer.HttpClientInitializer = credential; 
     initializer.ApplicationName = "C# Calendar Sample"; 

     service = new CalendarService(initializer); 

     Event newEvent = new Event(); 

     newEvent.Summary = "Appointment"; 
     newEvent.Description = "Need to meet my Uncle"; 

     IList<EventReminder> reminders = new List<EventReminder>(); 
     reminders.Add(new EventReminder { Method = "sms", Minutes = 10 }); 
     newEvent.Reminders = new Event.RemindersData { UseDefault = false, Overrides = reminders }; 

     newEvent.Recurrence = new String[] { "DTSTART;TZID=Bangladesh Standard Time:20140124T163000;RRULE:FREQ=DAILY" }; 

     IList<EventAttendee> attendees = new List<EventAttendee>(); 
     attendees.Add(new EventAttendee { Email = "[email protected]", Organizer = true, DisplayName = "Hannan" }); 
     newEvent.Attendees = attendees; 

     newEvent.GuestsCanInviteOthers = false; 
     newEvent.GuestsCanModify = false; 
     newEvent.GuestsCanSeeOtherGuests = false; 
     newEvent.Location = "Dhaka, Bangladesh"; 
     newEvent.Start = new EventDateTime { DateTime = DateTime.Now, TimeZone = "Bangladesh Standard Time" }; 

     Event recurringEvent = service.Events.Insert(newEvent, "primary").Execute(); 

     var list = await service.CalendarList.List().ExecuteAsync(); 
    } 
} 

Это моя переадресация URIs в моем проекте GoogleDevelopers Console.

Redirect URIs: http://localhost:7744/authorize/ 

И это сообщение об ошибке, отображаемое в браузере.

enter image description here

Я не мог найти способ, чтобы решить эту проблему. Некоторая помощь будет заметна. Я также выполняю поиск по всем зарегистрированным сообщениям в stackoverflow. Но я не мог найти решение.

+0

номера портов не совпадают, и номера портов являются важной частью самобытности HTTP URI. –

+0

@ Damien_The_Unbeliever Я знаю. Но я не определял перенаправление uri в моем консольном приложении. Как это определить. –

+0

@Damien_The_Unbeliever, как я могу определить uri из консольного приложения во время сопоставления? –

ответ

20

Я думаю, что вы делаете что-то неправильно, когда «создаете идентификатор клиента» в консоли GoogleDevelopers. Убедитесь, что вы закрыли «Установленное приложение» в типе приложения для доступа к проекту из консольного приложения.

Обратите внимание на прилагаемое изображение. В соответствии с типом запроса вы должны создать clientid и кредитные сертификаты в зарегистрированном приложении в Google Developers Console.

Вам не нужно определять перенаправление uri в консольном приложении во время аутентификации.

enter image description here

+0

Если вы используете консольное приложение, затем выберите «Другое» для «создать идентификатор клиента», –

 Смежные вопросы

  • Нет связанных вопросов^_^