2016-01-08 12 views
17

पर कैलेंडर सेट करें, मैं अपने कंपनी कैलेंडर के एक अलग संस्करण को दिखाने के लिए Google कैलेंडर एपीआई का उपयोग कर रहा हूं। मैं किसी को भी अपनी साइट पर कैलेंडर का अपना संस्करण देखना चाहता हूं। वर्तमान में, केवल मैं कैलेंडर पेज देख सकता हूं और यदि मैं किसी के साथ पेज यूआरएल साझा करना चाहता हूं, तो यह काम नहीं करता है - वे कुछ भी नहीं देख सकते हैं।जावास्क्रिप्ट Google कैलेंडर एपीआई कैलेंडर

मैं यहाँ गूगल के शुरुआती कोड का उपयोग कर रहा:

var CLIENT_ID = 'MYID**'; 
var SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"]; 

function checkAuth() { 
    gapi.auth.authorize(
     { 
     'client_id': CLIENT_ID, 
     'scope': SCOPES, 
     'immediate': true 
     }, handleAuthResult); 
} 

function handleAuthResult(authResult) { 
    var authorizeDiv = document.getElementById('authorize-div'); 
    loadCalendarApi(); 
} 

function handleAuthClick(event) { 
    gapi.auth.authorize({ 
     client_id: CLIENT_ID, 
     scope: SCOPES, 
     immediate: false 
    }, handleAuthResult); 
    return false; 
} 

function loadCalendarApi() { 
    gapi.client.load('calendar', 'v3', listUpcomingEvents); 
} 

function listUpcomingEvents() { 
    var request = gapi.client.calendar.events.list({ 
     'calendarId': '[email protected]', 
     'timeMin': '2011-06-03T10:00:00-07:00', 
     'showDeleted': false, 
     'singleEvents': true, 
     'maxResults': 1000, 
     'orderBy': 'startTime' 
}); 

लेकिन मैं जहां इस कैलेंडर को सार्वजनिक बनाने के लिए खोजने के लिए प्रतीत नहीं कर सकते हैं। स्टैक ओवरफ्लो पर दो उदाहरण अधिक व्याख्या नहीं करते हैं और मैं Google के एपीआई दस्तावेज़ीकरण पर कुछ भी कनेक्ट नहीं कर सकता।

+0

, मैं में सभी जानकारी संग्रहीत करने का सहारा होगा मेरी डेटाबेस और वहां से जानकारी खींचकर – ntgCleaner

+0

क्या आप कैलेंडर डेटा को सर्वर पर निजी एपीआई कुंजी के साथ खींच नहीं सकते हैं, इसे संसाधित कर सकते हैं और फिर इसे अपने जेएस पर सर्वर कर सकते हैं? आपको डेटाबेस की भी आवश्यकता नहीं होगी (हालांकि यह अधिक कुशल होगा)। –

उत्तर

0

Calendars संसाधन में दृश्यता के संबंध में कोई विशेषता नहीं है। हालांकि, चूंकि आप Events list का उपयोग कर रहे हैं, इसके संसाधन में दृश्यता विशेषता है जहां आप सार्वजनिक रूप से आइटम को मैन्युअल रूप से फ़िल्टर कर सकते हैं (यद्यपि मैन्युअल रूप से)।

सार्वजनिकThe event is public and event details are visible to all readers of the calendar.

+0

इसलिए मैंने पूरे कैलेंडर को सार्वजनिक करने की कोशिश करके जांच की है और अभी भी कोई परिणाम नहीं है। – ntgCleaner

1

आप केवल अपने कैलेंडर साझा करना चाहते हैं, तो आप यह सार्वजनिक कर सकते हैं और उसके बाद सभी को अपना कैलेंडर साझा। इस तरह से।

अपना कैलेंडर सार्वजनिक बनाने के लिए आप इस वेबसाइट के https://support.google.com/calendar/answer/37083?hl=en के चरणों का पालन कर सकते हैं।

अपने कैलेंडर को सार्वजनिक

  1. कंप्यूटर पर, Google कैलेंडर खोलें करें।

  2. ऊपरी दाएं भाग में सेटिंग सेटिंग्स गियर बटन> सेटिंग्स पर क्लिक करें।

  3. कैलेंडर्स टैब खोलें।

  4. उस कैलेंडर के नाम पर क्लिक करें जिसे आप साझा करना चाहते हैं।

  5. इस कैलेंडर टैब को साझा करें खोलें।

  6. विकल्प को चेक करें इस कैलेंडर को सार्वजनिक बनाएं।

  7. यदि अन्य लोगों को आपकी घटनाओं का विवरण देखने की इच्छा नहीं है, तो केवल खाली/व्यस्त देखें (विवरण छुपाएं) चुनें।

  8. सहेजें पर क्लिक करें।

और फिर आप आपके द्वारा कैलेंडर के लिए विकल्पों के भीतर एक iframe कैलेंडर साझा कर सकते हैं। https://support.google.com/calendar/answer/41207?hl=en

एम्बेड अपनी वेबसाइट

  1. कंप्यूटर पर, Google कैलेंडर खोलें पर एक कैलेंडर। आप केवल कंप्यूटर से अपनी वेबसाइट में एम्बेड करने के लिए कोड प्राप्त कर सकते हैं, मोबाइल ऐप नहीं।

  2. ऊपरी दाएं भाग में सेटिंग सेटिंग्स गियर बटन> सेटिंग्स पर क्लिक करें।

  3. कैलेंडर्स टैब खोलें।

  4. उस कैलेंडर के नाम पर क्लिक करें जिसे आप एम्बेड करना चाहते हैं।

  5. इस कैलेंडर अनुभाग को एम्बेड करें, प्रदर्शित आईफ़्रेम कोड कॉपी करें।

  6. अपनी वेबसाइट संपादक खोलें, फिर इस कोड को पेस्ट करें जहां आप कैलेंडर प्रदर्शित करना चाहते हैं।

+0

दुर्भाग्यवश, मैं Google की टर्न-कुंजी iFrame की तलाश नहीं कर रहा हूं। मैं सोच रहा हूं कि उनके एपीआई का उपयोग करना कैसे संभव है। – ntgCleaner

+0

आप एपीआई से कैलेंडर तक पहुंचने के लिए इसे सार्वजनिक बनाने के निर्देशों से उत्पन्न यूआरएल का उपयोग करने में सक्षम होना चाहिए। – kgiff

0

आप OAuth 2.0 प्राधिकरण प्रक्रिया (जो अब मान्य नहीं है) के रूप में उदाहरण करता है आरंभ करने के लिए जरूरत नहीं है। वास्तव में, आप अपने ब्राउज़र API कुंजी और कैलेंडर आईडी का उपयोग कर कैलेंडर लोड कर सकते हैं: मैं जिस तरह से मैं इसे कर रहा हूँ के लिए एक समाधान नहीं मिल रही है

function checkAuth() { 
    //gapi.auth.authorize(
    // { 
    // 'client_id': CLIENT_ID, 
    // 'scope': SCOPES.join(' '), 
    // 'immediate': true 
     // }, handleAuthResult); 
     gapi.client.setApiKey('browser API key'); 
     handleAuthResult({ error: false }); 
    } 

    function listUpcomingEvents() { 
    var request = gapi.client.calendar.events.list({ 
     'calendarId': 'your calendar id', 
     'timeMin': (new Date()).toISOString(), 
     'showDeleted': false, 
     'singleEvents': true, 
     'maxResults': 10, 
     'orderBy': 'startTime' 
    }); 

    request.execute(function(resp) { 
     var events = resp.items; 
     appendPre('Upcoming events:'); 

     if (events.length > 0) { 
     for (i = 0; i < events.length; i++) { 
      var event = events[i]; 
      var when = event.start.dateTime; 
      if (!when) { 
      when = event.start.date; 
      } 
      appendPre(event.summary + ' (' + when + ')') 
     } 
     } else { 
     appendPre('No upcoming events found.'); 
     } 

    }); 
    } 
संबंधित मुद्दे