2010-01-27 21 views
5

Sto tentando di aggiungere un evento a un calendario specifico in Google Calendar e semplicemente non trovo il modo. Ecco il mio codice:Aggiunta di un evento a un calendario Google "specifico" con GData API

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

Qualcuno può aiutarmi con questo?

Modifica

Forse devo dire che questo fonctionnability è accessibile solo per un amministratore di un sito che vuole aggiungere facilmente rendez-vous e nota per il suo calendario Google in modo che automaticamente autenticato con "hardcoded" valore quindi sono sicuro che il nome utente e la password sono ok.

risposta

6

Il codice funziona con Google Calendar predefinito per il nome utente e la password specificati. (IE sta usando il calendario predefinito per [email protected]) Puoi vedere questo perché l'URI punta a "/ feed/default/private". Se vuoi postare l'evento su un altro calendario, il nome utente deve essere autorizzato a postare su quel calendario e devi pubblicare su tali calendari uri privati.

EDIT: Il formato predefinito di questo URL privata è "http://www.google.com/calendar/feeds/CALENDAR_ID/private/full"

Per trovare l'ID del calendario, è prossimo Indirizzo calendario nella pagina delle impostazioni del calendario su Google Calendar. Apparirà simile a questo:

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

L'URL finale sarebbe:

EDIT: "http://www.google.com/calendar/feeds/ ***************************@group.calendar.google .com/private/pieno"

Questo andrà nel vostro Uri postUri = new Uri();

EDIT:

Il mio errore è stato che ho detto che è necessario includere anche la chiave privata dopo la parola privata. In realtà non devi farlo. Ho verificato che potrei postare correttamente su un calendario secondario rimuovendo la chiave privata.

+0

Grazie mille DanJo519. Ci proverò ora !! –

+0

Ho provato e ancora non riesce in un errore; Esecuzione della richiesta non riuscita: google.com/calendar/feeds/[email protected]/private-PRIVATE_KEY/full. Non sono sur per capire. Ho provato sia con "full" che con "basic" alla fine (Basic è fornito di default da google, ma ho provato con pieno anche perché l'hai detto. Comunque, nessuno funziona :( –

+1

Ho fatto una modifica alla mia risposta. In realtà non è necessario includere -PRIVATE_KEY. La rimozione di questo ti permetterà di postare, supponendo che tu abbia i permessi di scrittura sul calendario per cominciare. Ho verificato con successo questo con uno dei miei calendari secondari. –

Problemi correlati