2012-05-31 2 views
0

Я пытаюсь обновить Календарь Google с помощью последнего пакета данных Google Data API SDK.Ошибка аутентификации Календаря Google

Мой пример кода ниже:

  string sGoogleUserName = "[email protected]"; 
      string sGooglePassword = "xxxxxxxx"; 
      Uri oCalendarUri = new Uri("http://www.google.com/calendar/feeds/" + 
             sGoogleUserName + "/private/full"); 

      //Initialize Calendar Service 
      CalendarService oCalendarService = new CalendarService("CalendarSampleApp"); 
      oCalendarService.setUserCredentials(sGoogleUserName, sGooglePassword); 

      //Use Proxy 
      GDataRequestFactory oRequestFactory = 
       (GDataRequestFactory)oCalendarService.RequestFactory; 
      WebProxy oWebProxy = new WebProxy(
       WebRequest.DefaultWebProxy.GetProxy(oCalendarUri)); 
      oWebProxy.Credentials = CredentialCache.DefaultCredentials; 
      oWebProxy.UseDefaultCredentials = true; 
      oRequestFactory.Proxy = oWebProxy; 


      //Set Event Entry 
      EventEntry oEventEntry = new EventEntry(); 
      oEventEntry.Title.Text = "Test Calendar Entry From .Net"; 
      oEventEntry.Content.Content = 
       "Hurrah!!! I posted my first Google calendar event through .Net"; 

      //Set Event Location 
      Where oEventLocation = new Where(); 
      oEventLocation.ValueString = "New Zealand"; 
      oEventEntry.Locations.Add(oEventLocation); 

      //Set Event Time 
      When oEventTime = new When(new DateTime(2011, 5, 31, 9, 0, 0), 
       new DateTime(2011, 5, 31, 9, 0, 0).AddHours(1)); 
      oEventEntry.Times.Add(oEventTime); 

      //Set Additional Properties 
      ExtendedProperty oExtendedProperty = new ExtendedProperty(); 
      oExtendedProperty.Name = "SynchronizationID"; 
      oExtendedProperty.Value = Guid.NewGuid().ToString(); 
      oEventEntry.ExtensionElements.Add(oExtendedProperty); 

      // CalendarService oCalendarService = GAuthenticate(); 

      //Prevents This Error 
      //{"The remote server returned an error: (417) Expectation failed."} 
      System.Net.ServicePointManager.Expect100Continue = false; 

      //Save Event 
      oCalendarService.Insert(oCalendarUri, oEventEntry); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 

здесь ошибка ниже

Google.GData.Client.GDataRequestException: Выполнение аутентификации запроса возвращается неожиданный результат: 405 в Google.GData .Client.Utilities.getAuthException (токены TokenCollection, HttpWebResponse response) в Google.GData.Client.Utilities.QueryClientLoginToken (GDataCredentials дс, String SERVICENAME, String ApplicationName, Boolean fUseKeepAlive, IWebProxy ProxyServer, Uri clientLoginHandler) на Google.GData.Client.GDataGAuthRequest.QueryAuthToken (GDataCredentials ГЦ) в Google.GData.Client.GDataGAuthRequest.EnsureCredentials() в Google .GData.Client.GDataRequest.EnsureWebRequest() в Google.GData.Client.GDataGAuthRequest.EnsureWebRequest() в Google.GData.Client.GDataGAuthRequest.CopyRequestData() в Google.GData.Client.GDataGAuthRequest.Execute (Int32 retryCounter) в Google.GData.Client.GDataGAuthRequest.Execute() в Google.GData.Client.Service.EntrySend (Uri feedUri, базовая база AtomBase, Тип GDataRequestType, данные AsyncSendData) при Google.GData.Client.Service.Insert (Uri feedUri, AtomEntry newEntry, данные AsyncSendData) на Google.GData.Client.Service.Insert [TEntry] (Uri feedUri, TEntry вход)

ответ

0

попробуйте еще раз с версией 3.5.12. Возможно, вы находитесь за прокси-сервером и вам нужно установить правильные настройки прокси-сервера

+0

Последняя версия 2.1 [ссылка] (http://code.google.com/p/google-gdata/downloads/list) Как настроить правильную настройку прокси? – sevoug

3

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

С некоторыми испытаниями я выяснил, что это сработает, если я настрою прокси-сервер HTTP (я использовал Чарльз, но другие общие - это Fiddler и т. Д.), Но нет, если я попытался без прокси.

На догадке я закомментированная вещей под // Использовать прокси-сервер, как это и она работала:

string googleUserName = "[email protected]"; 
string googlePassword = "winnie"; 
Uri calendarUri = GetGoogleCalendarUri(); 

//Initialize Calendar Service 
CalendarService service = new CalendarService("AIConsole"); 
service.setUserCredentials(googleUserName, googlePassword); 

//Use Proxy - NOTE COMMENTED THIS PART OUT 
//GDataRequestFactory requestFactory = (GDataRequestFactory)service.RequestFactory; 
//WebProxy proxy = new WebProxy(WebRequest.DefaultWebProxy.GetProxy(calendarUri)); 
//proxy.Credentials = CredentialCache.DefaultCredentials; 
//proxy.UseDefaultCredentials = true; 
//requestFactory.Proxy = proxy; 

После этого он работал как шарм.

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