2010-01-27 3 views
5

Я пытаюсь добавить событие в определенный календарь в календаре Google, и я просто не нахожу его. Вот мой код:Добавление события в «конкретный» Google Calender с API GData

 CalendarService service = new CalendarService("MyTEst"); 
     service.setUserCredentials("Username", "Password"); 
     EventEntry entry = new EventEntry(); 

     // Set the title and content of the entry. 
     entry.Title.Text = "title"; 
     entry.Content.Content = "test"; 

     // Set a location for the event. 
     Where eventLocation = new Where(); 
     eventLocation.ValueString = "Location"; 
     entry.Locations.Add(eventLocation); 

     When eventTime = new When(DateTime.now, DateTime.now.AddDays(2)); 
     entry.Times.Add(eventTime); 

     Uri postUri = new Uri("http://www.google.com/calendar/feeds/default/private/full"); 

     // Send the request and receive the response 
     AtomEntry insertedEntry = service.Insert(postUri, entry); 

Может ли кто-нибудь помочь мне с этим?

Редактировать

Может быть, я должен отметить, что этот fonctionnability доступен только для администратора сайта, который хочет Исли добавить Рандеву и обратите внимание на свой календарь Google, так что я автоматически аутентифицирован его с «жёстко» поэтому я уверен, что имя пользователя и пароль в порядке.

ответ

6

Ваш код работает со стандартным Календарем Google для указанного имени пользователя и пароля. (IE использует календарь по умолчанию для [email protected]). Это можно увидеть, потому что URI указывает на «/ feed/default/private». Если вы хотите опубликовать мероприятие в другом календаре, имя пользователя должно авторизоваться для публикации в этом календаре, и вам нужно опубликовать в этом календаре частный uri.

EDIT: формат по умолчанию для этого частного URL является «http://www.google.com/calendar/feeds/CALENDAR_ID/private/full»

Чтобы найти код календаря, это следующий адрес календаря на странице настроек календаря на Календарей Google. Он будет выглядеть примерно так:

"***************************@group.calendar.google.com"

окончательный URL будет:

EDIT: "http://www.google.com/calendar/feeds/ ***************************@group.calendar.google .com/частный/полный»

Это будет иметь в своем Uri postUri = new Uri();

EDIT:

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

+0

Большое спасибо DanJo519. Я попробую это сейчас! –

+0

Я попытался, и он все еще не сработал с ошибкой; Выполнение запроса не выполнено: google.com/calendar/feeds/[email protected]/private-PRIVATE_KEY/full. Я не понимаю. Я попробовал как с «полным», так и с «базовым» в конце (Basic по умолчанию предоставляется по умолчанию из google, но я пробовал с полным, так что u сказал так. В любом случае, никто не работает :( –

+1

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