डेवलपर की गाइड: JavaScript

Blogger Data API की मदद से, क्लाइंट ऐप्लिकेशन, Google Data API फ़ीड के तौर पर Blogger कॉन्टेंट को देख सकते हैं और उसे अपडेट कर सकते हैं.

आपका क्लाइंट ऐप्लिकेशन, Blogger Data API का इस्तेमाल करके नई ब्लॉग पोस्ट बना सकता है. साथ ही, मौजूदा ब्लॉग पोस्ट में बदलाव कर सकता है या उन्हें मिटा सकता है. इसके अलावा, किसी खास शर्त से मैच होने वाली ब्लॉग पोस्ट के लिए क्वेरी भी कर सकता है.

इस दस्तावेज़ में, Blogger Data API की सुविधाओं के बारे में जानकारी दी गई है. साथ ही, JavaScript क्लाइंट लाइब्रेरी का इस्तेमाल करके, Data API के बुनियादी इंटरैक्शन के उदाहरण भी दिए गए हैं. अगर आपको लाइब्रेरी में इस्तेमाल किए जाने वाले प्रोटोकॉल के बारे में ज़्यादा जानना है, तो डेवलपर के लिए बनी इस गाइड का प्रोटोकॉल सेक्शन देखें.

कॉन्टेंट

ऑडियंस

यह दस्तावेज़ उन प्रोग्रामर के लिए है जो Blogger के साथ इंटरैक्ट करने वाले JavaScript क्लाइंट ऐप्लिकेशन लिखना चाहते हैं. इसमें, JavaScript क्लाइंट लाइब्रेरी का इस्तेमाल करके, Data API के बुनियादी इंटरैक्शन के कई उदाहरण दिए गए हैं.

Blogger Data API के रेफ़रंस की जानकारी के लिए, प्रोटोकॉल रेफ़रंस गाइड देखें. इस दस्तावेज़ में यह माना गया है कि आपको Google Data API प्रोटोकॉल के पीछे के सामान्य आइडिया और JavaScript क्लाइंट लाइब्रेरी के इस्तेमाल किए गए डेटा मॉडल और कंट्रोल फ़्लो के बारे में पता है. इसमें यह भी माना गया है कि आपको JavaScript में प्रोग्राम करने का तरीका पता है.

क्लाइंट लाइब्रेरी से मिलने वाली क्लास और तरीकों के बारे में रेफ़रंस जानकारी के लिए, JavaScript क्लाइंट लाइब्रेरी एपीआई का रेफ़रंस देखें.

इस दस्तावेज़ को क्रम से पढ़ने के लिए डिज़ाइन किया गया है. इसमें हर उदाहरण, पिछले उदाहरणों पर आधारित होता है.

उपयोग की शर्तें

JavaScript क्लाइंट लाइब्रेरी का इस्तेमाल करते समय, आपने Google JavaScript क्लाइंट लाइब्रेरी के इस्तेमाल की शर्तों का पालन करने की सहमति दी है.

साथ काम करने वाले एनवायरमेंट के बारे में जानकारी

फ़िलहाल, हम सिर्फ़ उन JavaScript क्लाइंट ऐप्लिकेशन के साथ काम करते हैं जो ब्राउज़र में वेब पेज पर चलते हैं. फ़िलहाल, यह सुविधा Firefox 1.5 और उसके बाद के वर्शन और Internet Explorer 6.0 और उसके बाद के वर्शन पर काम करती है.

JavaScript क्लाइंट लाइब्रेरी, सेवा के सर्वर के साथ सभी बातचीत को मैनेज करती है. अगर आप एक अनुभवी JS डेवलपर हैं, तो हो सकता है कि आप सोच रहे हों, "एक ही ऑरिजिन की नीति के बारे में क्या?" JavaScript क्लाइंट लाइब्रेरी की मदद से, आपके क्लाइंट को किसी भी डोमेन से Google Data API के अनुरोध भेजने की अनुमति मिलती है. साथ ही, यह ब्राउज़र के सुरक्षा मॉडल का पालन करती है.

शुरू करना

JavaScript क्लाइंट ऐप्लिकेशन लिखने से पहले, आपको लाइब्रेरी हासिल करने के लिए कुछ सेटअप करने होंगे.

Blogger खाता बनाना

टेस्टिंग के लिए, Blogger खाते के लिए साइन अप किया जा सकता है. Blogger, Google खातों का इस्तेमाल करता है. इसलिए, अगर आपके पास पहले से ही Google खाता है, तो आपको कुछ नहीं करना होगा.

लाइब्रेरी हासिल करना

क्लाइंट लाइब्रेरी का इस्तेमाल करने से पहले, क्लाइंट को सर्वर से क्लाइंट लाइब्रेरी कोड का अनुरोध करना होगा.

Google AJAX API लोडर को फ़ेच करने के लिए, अपने एचटीएमएल दस्तावेज़ के <head> सेक्शन में <script> टैग का इस्तेमाल करके शुरुआत करें:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

लोडर फ़ेच करने के बाद, Google Data API क्लाइंट लाइब्रेरी पाने के लिए, अपने JavaScript सेटअप कोड में यह लाइन इस्तेमाल करें. इसे आपके एचटीएमएल दस्तावेज़ के <head> सेक्शन से कॉल किया जाना चाहिए. इसके अलावा, इसे एचटीएमएल दस्तावेज़ के <head> सेक्शन में <script> टैग का इस्तेमाल करके शामिल की गई JavaScript फ़ाइल से भी कॉल किया जा सकता है:

google.load("gdata", "1.x");

google.load() का दूसरा पैरामीटर, JavaScript क्लाइंट लाइब्रेरी के अनुरोध किए गए वर्शन की संख्या है.  हमारे वर्शन के नंबर तय करने का तरीका, Google Maps API के वर्शन के नंबर तय करने के तरीके पर आधारित है. यहां वर्शन के संभावित नंबर और उनका मतलब बताया गया है:

"1"
मेजर वर्शन 1 का आखिरी से पहले वाला रिविज़न.
"1.x"
मेजर वर्शन 1 का सबसे नया रिविज़न.
"1.s"
मेजर वर्शन 1 का नया स्टेबल रिविज़न. हम कभी-कभी डेवलपर से मिले सुझावों के आधार पर, क्लाइंट लाइब्रेरी के किसी वर्शन को "स्टैबल" के तौर पर घोषित करेंगे. हालांकि, हो सकता है कि उस वर्शन में नई सुविधाएं न हों.
"1.0", "1.1" वगैरह
लाइब्रेरी का कोई खास वर्शन, जिसमें मेजर और माइनर रिविज़न नंबर शामिल हो.

google.load() को कॉल करने के बाद, आपको लोडर को यह बताना होगा कि पेज लोड होने तक इंतज़ार करें और फिर अपना कोड कॉल करें:

google.setOnLoadCallback(getMyBlogFeed);

यहां getMyBlogFeed() एक फ़ंक्शन है, जिसकी जानकारी हम इस दस्तावेज़ के अगले सेक्शन में देंगे. <body> एलिमेंट से जुड़ा onload हैंडलर इस्तेमाल करने के बजाय, इस तरीके का इस्तेमाल करें.

Blogger की सेवा की पुष्टि करना

Blogger Data API का इस्तेमाल करके, सार्वजनिक और निजी, दोनों फ़ीड ऐक्सेस किए जा सकते हैं. सार्वजनिक फ़ीड के लिए पुष्टि करने की ज़रूरत नहीं होती. हालांकि, ये फ़ीड रीड-ओनली होते हैं. अगर आपको ब्लॉग में बदलाव करने हैं, तो निजी फ़ीड का अनुरोध करने से पहले, आपके क्लाइंट को पुष्टि करनी होगी.

JavaScript क्लाइंट लाइब्रेरी, पुष्टि करने के लिए AuthSub सिस्टम का इस्तेमाल करती है. आम तौर पर, Google Data API की मदद से पुष्टि करने के बारे में ज़्यादा जानने के लिए, पुष्टि करने से जुड़ा दस्तावेज़ देखें.

AuthSub प्रॉक्सी की पुष्टि

AuthSub प्रॉक्सी की पुष्टि करने की सुविधा का इस्तेमाल, वेब ऐप्लिकेशन करते हैं. इन ऐप्लिकेशन को अपने उपयोगकर्ताओं की पुष्टि, Google खातों के लिए करनी होती है. वेबसाइट ऑपरेटर और क्लाइंट कोड के पास, Blogger उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड का ऐक्सेस नहीं होता. इसके बजाय, क्लाइंट को खास AuthSub टोकन मिलते हैं. इनकी मदद से, क्लाइंट किसी उपयोगकर्ता की ओर से कार्रवाई कर सकता है.

वेब-आधारित JavaScript क्लाइंट के लिए पुष्टि की प्रोसेस के दौरान क्या होता है, इसकी खास जानकारी यहां दी गई है:

  1. क्लाइंट ऐप्लिकेशन, क्लाइंट लाइब्रेरी से मिले google.accounts.user.login() तरीके को कॉल करता है. साथ ही, उसे "स्कोप" वैल्यू भी पास करता है, जिससे पता चलता है कि Google की किस सेवा का इस्तेमाल करना है. Blogger के लिए, स्कोप "http://www.blogger.com/feeds/" है.
  2. क्लाइंट लाइब्रेरी, ब्राउज़र को Google के "ऐक्सेस का अनुरोध" पेज पर भेजती है. यहां उपयोगकर्ता, सेवा में लॉग इन करने के लिए अपने क्रेडेंशियल डाल सकता है.
  3. अगर उपयोगकर्ता लॉग इन कर लेता है, तो AuthSub सिस्टम, पुष्टि करने वाले टोकन के साथ ब्राउज़र को वेब क्लाइंट के यूआरएल पर वापस भेजता है.
  4. JavaScript क्लाइंट लाइब्रेरी, टोकन को कुकी में सेव करती है और google.accounts.user.login() को कॉल करने वाले क्लाइंट ऐप्लिकेशन के फ़ंक्शन को कंट्रोल वापस देती है.
  5. जब क्लाइंट ऐप्लिकेशन, Blogger के साथ इंटरैक्ट करने वाले क्लाइंट लाइब्रेरी के तरीकों को कॉल करता है, तो क्लाइंट लाइब्रेरी सभी अनुरोधों में टोकन को अपने-आप अटैच कर देती है.

ध्यान दें: JavaScript क्लाइंट लाइब्रेरी, वेब ब्राउज़र में पुष्टि किए गए Blogger अनुरोध करने के लिए, आपके पेज पर ऐसी इमेज होनी चाहिए जो आपके पेज के डोमेन पर होस्ट की गई हो. यह कोई भी इमेज हो सकती है. यहां तक कि एक पिक्सल वाली पारदर्शी इमेज भी हो सकती है. हालांकि, पेज पर कोई इमेज ज़रूर होनी चाहिए. अगर आपको इमेज को अपने पेज पर नहीं दिखाना है, तो इमेज को रेंडरिंग एरिया के बाहर रखने के लिए, <img> टैग के style एट्रिब्यूट का इस्तेमाल किया जा सकता है. उदाहरण के लिए: style="position:absolute; top: -1000px;"

यहां क्लाइंट-ऐप्लिकेशन कोड दिया गया है, जो लॉग इन करने की प्रोसेस को मैनेज करता है. हम बाद में किसी दूसरे कोड से setupMyService() फ़ंक्शन को कॉल करेंगे.

function logMeIn() {
  scope = "http://www.blogger.com/feeds/";
  var token = google.accounts.user.login(scope);
}

function setupMyService() {
  var myService =
    new google.gdata.blogger.BloggerService('exampleCo-exampleApp-1');
  logMeIn();
  return myService;
}

सलाह: हमारा सुझाव है कि आप लॉगिन बटन या उपयोगकर्ता के इनपुट का कोई अन्य तरीका उपलब्ध कराएं, ताकि उपयोगकर्ता को मैन्युअल रूप से लॉगिन करने के लिए कहा जा सके. इसके बजाय, अगर उपयोगकर्ता के इंटरैक्शन का इंतज़ार किए बिना, पेज लोड होने के तुरंत बाद google.accounts.user.login() को कॉल किया जाता है, तो उपयोगकर्ता को आपके पेज पर आने पर सबसे पहले Google लॉगिन पेज दिखता है. अगर उपयोगकर्ता लॉग इन नहीं करता है, तो Google उसे आपके पेज पर वापस नहीं भेजता. इसलिए, उपयोगकर्ता के हिसाब से, उसने आपके पेज पर जाने की कोशिश की, लेकिन उसे वहां से भेज दिया गया और कभी वापस नहीं भेजा गया. इस स्थिति में, उपयोगकर्ताओं को उलझन हो सकती है और वे परेशान हो सकते हैं. इस दस्तावेज़ में दिए गए उदाहरण के कोड में, उदाहरण को आसान बनाने के लिए, हम google.accounts.user.login() को लोड होने के तुरंत बाद कॉल करेंगे. हालांकि, हम असल क्लाइंट ऐप्लिकेशन के लिए इस तरीके का सुझाव नहीं देते.

ध्यान दें कि आपको token नाम वाले वैरिएबल के साथ कुछ करने की ज़रूरत नहीं है. क्लाइंट लाइब्रेरी, टोकन को ट्रैक करती है, इसलिए आपको ऐसा करने की ज़रूरत नहीं है.

ध्यान दें: नया BloggerService ऑब्जेक्ट बनाने पर, क्लाइंट लाइब्रेरी google.gdata.client.init() नाम के एक तरीके को कॉल करती है. यह तरीका यह जांच करता है कि क्लाइंट जिस ब्राउज़र में चल रहा है वह काम करता है या नहीं. अगर कोई गड़बड़ी होती है, तो क्लाइंट लाइब्रेरी, उपयोगकर्ता को गड़बड़ी का मैसेज दिखाती है. अगर आपको इस तरह की गड़बड़ी को खुद मैनेज करना है, तो सेवा बनाने से पहले google.gdata.client.init(handleInitError) को साफ़ तौर पर कॉल किया जा सकता है. यहां handleInitError() आपका फ़ंक्शन है. अगर कोई गड़बड़ी होती है, तो आपके फ़ंक्शन को एक स्टैंडर्ड Error ऑब्जेक्ट मिलता है. इस ऑब्जेक्ट के साथ अपनी पसंद के मुताबिक कुछ भी किया जा सकता है.

टोकन तब तक मान्य रहता है, जब तक आप इसे google.accounts.user.logout() को कॉल करके रद्द नहीं कर देते:

function logMeOut() {
  google.accounts.user.logout();
}

अगर logout() को कॉल नहीं किया जाता है, तो टोकन को सेव करने वाली कुकी दो साल तक काम करती है. हालांकि, उपयोगकर्ता के इसे मिटाने पर यह कुकी काम नहीं करती. कुकी को ब्राउज़र के सभी सेशन में बनाए रखा जाता है, ताकि उपयोगकर्ता अपना ब्राउज़र बंद करके उसे फिर से खोल सके और आपके क्लाइंट पर वापस आ सके. ऐसा करने पर भी, वह लॉग इन रहेगा.

हालांकि, कुछ असामान्य स्थितियों में, किसी सेशन के दौरान टोकन अमान्य हो सकता है. अगर Blogger किसी टोकन को अस्वीकार करता है, तो आपके क्लाइंट को गड़बड़ी की स्थिति को मैनेज करना चाहिए. इसके लिए, मौजूदा टोकन वाली कुकी को हटाने के लिए logout() को कॉल करें. इसके बाद, नया और मान्य टोकन पाने के लिए login() को फिर से कॉल करें.

AuthSub के दो और तरीके हैं, जो आपको अलग-अलग संदर्भों में काम के लग सकते हैं:

  • google.accounts.user.checkLogin(scope) से पता चलता है कि ब्राउज़र के पास, दिए गए दायरे के लिए पुष्टि करने वाला टोकन है या नहीं.
  • google.accounts.user.getInfo(), डीबग करने के लिए मौजूदा टोकन के बारे में पूरी जानकारी देता है.

AuthSub के साथ इंटरैक्ट करने के लिए, JavaScript का इस्तेमाल करने के बारे में जानकारी पाने के लिए, JavaScript क्लाइंट लाइब्रेरी के साथ "AuthSub" पुष्टि करने की सुविधा का इस्तेमाल करना दस्तावेज़ देखें. इसमें टोकन मैनेजमेंट और checkLogin() और getInfo() के बारे में जानकारी भी शामिल है.

वापस सबसे ऊपर जाएं