Sto cercando di integrare la mia applicazione (app desktop Windows e app Web) con i calendari mobili.Come inviare eventi al calendario IPhone
La mia applicazione dovrebbe
- spinta nuovi eventi ai calendari mobili
- recuperano gli eventi formano calendari mobili
Finora sono riuscito a integrarsi con il calendario di Google (molto facile, simple library + OAuth)
Ora voglio fare lo stesso con il calendario di iCloud, ma non è così facile.
- Nelle impostazioni di iCould posso rendere pubblico un calendario. Poi posso recuperare gli eventi (come un file iCalendar), ma non posso spingere gli eventi.
- Impossibile trovare alcuna libreria seria per l'integrazione del calendario iCould. Ho dato una prova a CalDav.Client, ma ho bisogno di fornire l'URL del server CalDAV. che secondo this dovrebbe essere simile"
https://pXX-caldav.icloud.com/USER_ID/calendars/CALENDAR_ID
. Io non hanno idea di cosaUSER_ID
eCALENDAR_ID
sono e dove trovarli.
Tutte le idee?
PS
C'è una soluzione. Posso chiedi all'utente di creare un account Google insieme a un calendario e utilizzarlo come proxy.Integrare IPhone con il calendario di Google e formare l'altro sito integra la mia applicazione con il calendario di Google. Funziona, ma la configurazione è un po 'noiosa per l'utente
EDIT
Ho provato seguendo le istruzioni di @ HNH e scoprire CalDAV in questo modo:
PROPFIND https://p42-caldav.icloud.com/ HTTP/1.1
Depth: 0
Prefer: return-minimal
Content-Type: application/xml; charset=utf-8
Host: p42-caldav.icloud.com
Content-Length: 102
<d:propfind xmlns:d="DAV:">
<d:prop>
<d:current-user-principal />
</d:prop>
</d:propfind>
Il risultato è stato 401:
HTTP/1.1 401 Unauthorized
Content-Type: text/html;charset=utf-8
WWW-Authenticate: x-mobileme-authtoken realm="MMCalDav"
WWW-Authenticate: basic realm="MMCalDav"
Server: iCloudCalendarServer 15G33
Date: Tue, 26 Jan 2016 12:46:14 GMT
X-Responding-Server: mr26p42ic-ztdg05101801 17 a63660a6f7d1a25b5a7ed66dab0da843
X-Transaction-Id: c8dc19d4-c42a-11e5-8381-008cfaeb448c
Content-Length: 141
Strict-Transport-Security: max-age=31536000; includeSubDomains
<html><head><title>Unauthorized</title></head><body><h1>Unauthorized</h1><p>You are not authorized to access this resource.</p></body></html>
EDIT 2
A seguito di ulteriori istruzioni che sono riuscito a autenticare, ma ancora hanno problemi con le richieste del articolo:
Per:
<d:propfind xmlns:d="DAV:" xmlns:cs="http://calendarserver.org/ns/">
<d:prop>
<d:displayname />
<cs:getctag />
</d:prop>
</d:propfind>
ottengo: (ctag
non trovato, e displayName
con valore di "tmp" - che io non riconosco)
<?xml version='1.0' encoding='UTF-8'?>
<multistatus xmlns='DAV:'>
<response>
<href>/</href>
<propstat>
<prop>
<displayname>tmp</displayname>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<getctag xmlns='http://calendarserver.org/ns/'/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
</multistatus>
E per questo:
<c:calendar-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
<d:prop>
<d:getetag />
<c:calendar-data />
</d:prop>
<c:filter>
<c:comp-filter name="VCALENDAR" />
</c:filter>
</c:calendar-query>
ottengo 400 Richiesta
Che cos'è la "tua applicazione"? È un'applicazione iOS? O un servizio web? – hnh
@hnh È un'applicazione desktop Windows o un'applicazione Web (preferibilmente desktop, ma anche Web). – gisek
Modifica 2: molto probabilmente gli URL sono sbagliati. Leggere attentamente [ri) [Costruire un client CalDAV] (http://sabre.io/dav/building-a-caldav-client/). – hnh