2016-01-26 3 views
6

पर ईवेंट को कैसे धक्का दें मैं मोबाइल कैलेंडर के साथ अपने एप्लिकेशन (विंडोज डेस्कटॉप ऐप और वेब ऐप) को एकीकृत करने की कोशिश कर रहा हूं।आईफोन कैलेंडर

मेरा आवेदन मोबाइल कैलेंडर के लिए

  • धक्का नई घटनाओं के लिए माना जाता है
  • लाने घटनाओं मोबाइल कैलेंडर

अब तक मैं गूगल कैलेंडर (बहुत आसान है, simple library के साथ एकीकृत करने में कामयाब रहे फार्म + ओएथ)

अब मैं iCloud कैलेंडर के साथ ऐसा करना चाहता हूं, लेकिन यह इतना आसान नहीं है।

  • iCould सेटिंग्स में मैं कैलेंडर को सार्वजनिक कर सकता हूं। मैं घटनाओं को प्राप्त कर सकता हूं (एक iCalendar फ़ाइल के रूप में), लेकिन मैं घटनाओं को धक्का नहीं दे सकता।
  • iCould कैलेंडर एकीकरण के लिए कोई गंभीर पुस्तकालय नहीं मिल रहा है। मैंने CalDav.Client को आज़मा दिया, लेकिन CalDAV सर्वर url प्रदान करने की आवश्यकता है। जो this के अनुसार की तरह "https://pXX-caldav.icloud.com/USER_ID/calendars/CALENDAR_ID। मैं पता नहीं क्या USER_ID और CALENDAR_ID हैं और जहां उन्हें खोजने के लिए दिखना चाहिए।

कोई भी विचार?

पुनश्च

एक समाधान नहीं है। मैं यह कर सकते हैं उपयोगकर्ता को कैलेंडर के साथ Google accout बनाने और प्रॉक्सी के रूप में उपयोग करने के लिए कहें। Google कैलेंडर के साथ आईफोन एकीकृत करें और दूसरी साइट को Google कैलेंडर के साथ मेरा एप्लिकेशन एकीकृत करें। यह काम करता है, लेकिन कॉन्फ़िगरेशन उपयोगकर्ता के लिए कठिन है।

संपादित

मैं @ HNH के निर्देशों के अनुसार की कोशिश की और CalDAV इस तरह की खोज:

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> 

परिणाम था 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> 

संपादित 2

आगे के बाद निर्देश मैं प्रमाणित करने में कामयाब रहे, लेकिन अभी भी

के लिए:: लेख से अनुरोध के साथ समस्या है

<d:propfind xmlns:d="DAV:" xmlns:cs="http://calendarserver.org/ns/"> 
    <d:prop> 
    <d:displayname /> 
    <cs:getctag /> 
    </d:prop> 
</d:propfind> 

मैं: (ctag नहीं मिला, और "tmp" के मूल्य के साथ displayName - जो मैं पहचान नहीं पा रहे)

<?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> 

और इस के लिए:

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

मैं 400 गलत अनुरोध प्राप्त

+0

'आपका आवेदन' क्या है? क्या यह एक आईओएस एप्लीकेशन है? या एक वेब सेवा? – hnh

+0

@hnh यह एक विंडोज डेस्कटॉप एप्लिकेशन है, या एक वेब अनुप्रयोग (अधिमानतः डेस्कटॉप, लेकिन वेब भी करेगा)। – gisek

+0

संपादित 2: काफी संभावना है कि यूआरएल गलत हैं। ध्यान से (पुनः) पढ़ें [एक CalDAV क्लाइंट का निर्माण] (http://sabre.io/dav/building-a-caldav-client/)। – hnh

उत्तर

3

यह एक अच्छा परिचय है: Building a CalDAV client। यह भी वर्णन करता है कि कैलेंडर खोज प्रक्रिया कैसे काम करती है (आपको कैलेंडर होमसेट यूआरएल कैसे मिलता है)।

कई CalDAV सर्वर OAuth का समर्थन नहीं करते हैं, तो आपको आमतौर पर उपयोगकर्ता को लॉगिन/पासवर्ड के लिए पूछना होगा।

CalDAV के लिए .NET लाइब्रेरी प्रतीत नहीं होता है। आप यहां पर कार्यान्वयन की एक सूची पा सकते हैं: http://caldav.calconnect.org/implementations/librariestools.html

सारांश: संभवतः Google के साथ आपने जो किया उतना आसान नहीं है, लेकिन बहुत मुश्किल नहीं है। और एक बार आपके पास हो जाने के बाद, आप कई अलग-अलग सर्वर से कनेक्ट कर सकते हैं, बशर्ते कि CalDAV मानक है ... (Google सहित, आप इसे CalDAV के साथ भी कनेक्ट कर सकते हैं)।

अद्यतन सवाल का संपादित के बाद:

401 एक सामान्य HTTP प्रतिक्रिया है। इसका मतलब है कि आपको अनुरोध जारी रखने के लिए प्रमाण-पत्र प्रदान करने की आवश्यकता है। एक ग्राहक आमतौर पर उपयोगकर्ता को लॉगिन/पासवर्ड के लिए संकेत देगा और फिर अनुरोध को फिर से चलाएगा। विकिपीडिया article on Basic auth में मूल प्रमाणीकरण का वर्णन किया गया है।

एंट्री पॉइंट यूआरएल के रूप में p42-caldav.icloud.com का उपयोग करना एक और गलती है। caldav.icloud.com का उपयोग करें क्योंकि आप नहीं जानते कि उपयोगकर्ता किस विभाजन पर है। उपयोगकर्ता कैलेंडर पर होस्ट किए जाने वाले वास्तविक URL को खोजने के लिए आपको Building a CalDAV client में वर्णित खोज प्रक्रिया का उपयोग करने की आवश्यकता है।

+0

इस भाग के बारे में क्या? "मुझे CalDAV सर्वर url प्रदान करने की आवश्यकता है। इसके अनुसार यह" https://pXX-caldav.icloud.com/USER_ID/calendars/CALENDAR_ID "जैसा दिखना चाहिए।" मुझे USER_ID और CALENDAR_ID मान कहां मिल सकते हैं? – gisek

+0

खोज प्रक्रिया iCloud के साथ काम नहीं करता है। यह प्राधिकरण को पुनः प्राप्त करता है। मुझे यह भी यकीन नहीं है कि मैं सही यूआरएल मार रहा हूं।/कृपया संपादन देखें। – gisek

+0

मैंने आपका उत्तर पढ़ा। मुझे बस प्रदान किया गया लिंक बहुत सामान्य है। मैं अभी OAuth का उपयोग करके कुछ भी करने की कोशिश नहीं कर रहा हूं। समस्या यह है कि मुझे iCloud के लिए विशिष्ट दस्तावेज नहीं मिल रहा है और CalDAV internals को जानना मुझे बहुत मदद नहीं करता है। – gisek

संबंधित मुद्दे