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

Blogger डेटा एपीआई, क्लाइंट ऐप्लिकेशन को Google डेटा एपीआई फ़ीड के रूप में Blogger कॉन्टेंट देखने और उसे अपडेट करने की सुविधा देता है.

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

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

कॉन्टेंट

दर्शक

यह दस्तावेज़ उन प्रोग्रामर के लिए है जो PHP क्लाइंट ऐप्लिकेशन लिखना चाहते हैं, जो Blogger के साथ इंटरैक्ट कर सकते हैं.

इस दस्तावेज़ में यह माना जाता है कि आप Google के डेटा एपीआई प्रोटोकॉल को इस्तेमाल करने के सामान्य आइडिया समझते हैं.

क्लाइंट लाइब्रेरी से मिली क्लास और मेथड के बारे में जानकारी पाने के लिए, PHP क्लाइंट लाइब्रेरी एपीआई का रेफ़रंस देखें. Blogger के डेटा एपीआई की सामान्य जानकारी के लिए, प्रोटोकॉल रेफ़रंस गाइड देखें.

रिपोर्ट का इस्तेमाल करना

क्लाइंट लाइब्रेरी सेट अप करने में मदद पाने के लिए, शुरुआती निर्देश देखें.

Zend क्लाइंट लाइब्रेरी के लिए PHP 5.1.4 या इसके बाद का वर्शन ज़रूरी है. यह Zend Frame के भाग के रूप में और अलग डाउनलोड के रूप में भी उपलब्ध है. Blogger से इंटरैक्ट करने के लिए, क्लाइंट लाइब्रेरी के 1.0.0 या इसके बाद के वर्शन का इस्तेमाल करें.

Blogger खाता बनाना

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

सैंपल कोड चलाना

पूरी तरह से काम करने वाला सैंपल क्लाइंट, जिसमें इस दस्तावेज़ में दिखाए गए सभी कोड कोड हैं, वह Zend फ़्रेमवर्क SVN रिपॉज़िटरी में उपलब्ध है. यह नमूना /framework/standard/ट्रंक/डेमो/Zend/Gdata/Blogger.php पर मौजूद है. नमूने में इस दस्तावेज़ में बताए गए सभी फ़ंक्शन शामिल हैं. इसे सिर्फ़ कमांड लाइन में चलाया जा सकता है:

php Blogger.php -- --user=[email_address] --pass=[password]

इस नमूने को चलाने या Zend फ़्रेमवर्क का इस्तेमाल करके अपना खुद का कोड बनाने से पहले, आपको include_path सेट करना पड़ सकता है और सही क्लास लोड करनी पड़ सकती हैं. शामिल करने के पाथ को या तो php.ini सेटिंग का इस्तेमाल करके या set_include_path तरीके का इस्तेमाल करके सेट किया जा सकता है. यह कोड मुख्य Zend_Gdata क्लास, Zend_Gdata_Query क्लास, और ऑथेंटिकेशन क्लास Zend_Gdata_ClientLogin का ऐक्सेस मांगता है.

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_Query');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');

मैजिक गैटर और सेटर का इस्तेमाल करना

PHP क्लाइंट लाइब्रेरी में, डेवलपर के लिए सुविधा के तौर पर मैजिक सेटर/गेटर्स सहायता जोड़ी गई है. ये क्लास के प्रॉपर्टी को ऐक्सेस करने की अनुमति देती हैं. इसके लिए, वे पारंपरिक सेटर/गेटर के तरीकों का इस्तेमाल करती हैं या प्रॉपर्टी ऐक्सेस करती हैं. उदाहरण के लिए, अगर $gdataObject इस लाइब्रेरी में किसी ऑब्जेक्ट का इंस्टैंट है, तो नीचे दी गई दो लाइनों के कोड एक जैसे हैं:

$gdataObject->setFoo("bar");
$gdataObject->foo = "bar";

इसी तरह, कोड की इन दो लाइनों का भी एक जैसा असर होता है:

$baz = $gdataObject->getFoo();
$baz = $gdataObject->foo;

इसी तरह, जादुई फ़ैक्ट्री के तरीके से नई चीज़ों का एलान करना आसान हो जाता है. Zend का नाम रखने के लिए, कन्वेंशन के लिए लंबे समय तक इस्तेमाल होने वाले नाम को याद रखने के बजाय, Zend सेवा के क्लाइंट को newObject(); पर कॉल किया जा सकता है. इससे नया object बन सकता है. उदाहरण के लिए, नीचे दिए गए दो स्निपेट नए draft एक्सटेंशन ऑब्जेक्ट की जानकारी देते हैं. आपको drafts पर पोस्ट बनाना सेक्शन में ज़्यादा जानकारी मिलेगी.

// Traditional instantiation
$gdClient = new Zend_Gdata();
$draft = new Zend_Gdata_App_Extension_Draft();

// Magic factory instantiation
$gdClient = new Zend_Gdata();
$draft = $gdClient->newDraft();

मैजिक सेटर/मीटर और फ़ैक्ट्री वैकल्पिक हैं, इसलिए जो भी तरीका आपके लिए सबसे अच्छा हो उसका इस्तेमाल करें.

दूसरे संसाधन

Zend फ़्रेमवर्क's के Google डेटा API घटक (Zend_Gdata) के लिए अन्य संसाधन:

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

Blogger के डेटा एपीआई का इस्तेमाल करके, सार्वजनिक और निजी, दोनों फ़ीड ऐक्सेस किए जा सकते हैं. सार्वजनिक फ़ीड के लिए, किसी पुष्टि करने की ज़रूरत नहीं होती. हालांकि, ये रीड-ओनली होते हैं. अगर आप ब्लॉग में बदलाव करना चाहते हैं, तो निजी फ़ीड का अनुरोध करने से पहले आपके क्लाइंट को पुष्टि करनी होगी. यह इन तीन में से किसी भी तरीके का इस्तेमाल करके पुष्टि कर सकता है: OAuth की पुष्टि करना, AuthSub प्रॉक्सी पुष्टि करना या ClientLogin उपयोगकर्ता नाम/पासवर्ड पुष्टि करना.

Google डेटा एपीआई की मदद से पुष्टि करने के बारे में ज़्यादा जानकारी के लिए, पुष्टि करने वाला दस्तावेज़ देखें.

इस दस्तावेज़ के आगे के सेक्शन के ज़्यादातर सैंपल में यह माना जाता है कि आपके पास $gdClient नाम का एक क्लाइंट ऑब्जेक्ट है, जिसकी पुष्टि हो चुकी है.

OAuth प्रमाणीकरण

Zend PHP GData लाइब्रेरी का इस्तेमाल करके OAuth की पुष्टि करने से जुड़े दस्तावेज़ देखने के लिए, कृपया Google डेटा प्रोटोकॉल क्लाइंट लाइब्रेरी में मौजूद OAuth देखें.

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

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

जब कोई उपयोगकर्ता आपके ऐप्लिकेशन पर पहली बार आता है, तब उसकी पुष्टि नहीं की जाती है. ऐसी स्थिति में, आपको कुछ जानकारी दिखानी होगी और उपयोगकर्ता को Google पेज पर भेजने वाला लिंक जोड़ना होगा. ऐसा करने पर, उपयोगकर्ता के ब्लॉग को ऐक्सेस करने के आपके अनुरोध की पुष्टि की जा सकेगी. Zend क्लाइंट लाइब्रेरी, Google पेज का यूआरएल जनरेट करने का फ़ंक्शन देती है. नीचे दिया गया कोड, AuthSubRequest पेज का यूआरएल वापस लाता है:

function getAuthSubUrl()
{
  $next = getCurrentUrl();
  $scope = 'http://www.google.com/blogger/feeds/';
  $secure = false;
  $session = true;
  return Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure, $session);
}

$authSubUrl = getAuthSubUrl();
echo '<a href=\"$authSubUrl\">login to your Google account</a>';

getAuthSubTokenUri वाला तरीका नीचे दिए गए पैरामीटर का इस्तेमाल करता है (AuthSubRequest हैंडलर के इस्तेमाल किए गए क्वेरी पैरामीटर के मुताबिक):

अगला
उस पेज का यूआरएल जिस पर Google, पुष्टि करने के बाद उपयोगकर्ता को रीडायरेक्ट करेगा.
दायरा
यह बताता है कि ऐप्लिकेशन Blogger फ़ीड को ऐक्सेस करने के लिए टोकन का अनुरोध कर रहा है. इस्तेमाल की जाने वाली दायरे की स्ट्रिंग http://www.blogger.com/feeds/ है.
सुरक्षित
इससे पता चलता है कि क्लाइंट सुरक्षित टोकन के लिए अनुरोध कर रहा है या नहीं.
सेशन
यह बताता है कि लौटाया गया टोकन, एक से ज़्यादा इस्तेमाल (सेशन) टोकन के साथ बदला जा सकता है या नहीं.

ऊपर दिया गया उदाहरण एक कॉल दिखाता है जो सुरक्षित टोकन का अनुरोध नहीं करता (secure का मान false है). नतीजे के तौर पर मिलने वाला अनुरोध यूआरएल इस तरह दिखाई दे सकता है:

https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F%2Fwww.blogger.com%2Ffeeds%2F&session=1&secure=0&next=http%3A%2F%2Fwww.example.com%2Fwelcome.php

उपयोगकर्ता, Google की साइट के लिंक को फ़ॉलो करता है और अपने Google खाते की पुष्टि करता है.

उपयोगकर्ता की पुष्टि करने के बाद, AuthSub सिस्टम उन्हें उस यूआरएल पर रीडायरेक्ट करता है जो आपने AuthSubRequest यूआरएल के next क्वेरी पैरामीटर में बताया है. AuthSub सिस्टम उस यूआरएल के लिए token क्वेरी पैरामीटर की वैल्यू के तौर पर पुष्टि करने वाला टोकन जोड़ता है. उदाहरण के लिए:

http://www.example.com/welcome.php?token=yourAuthToken

$_GET['token'] का इस्तेमाल करके, टोकन की वैल्यू वापस पाई जा सकती है.

यह टोकन वैल्यू, एक बार इस्तेमाल होने वाले AuthSub टोकन के बारे में बताती है. इस उदाहरण में, $session = true के बारे में बताया गया था, इसलिए इस टोकन को Zend_Gdata_AuthSub::getAuthSubSessionToken तरीके का इस्तेमाल करके, AuthSub सत्र टोकन के साथ बदला जा सकता है. यह टोकन AuthSubSessionToken सेवा को कॉल करता है:

if(! isset($_SESSION['sessionToken']) && isset($_GET['token'])) {
  $_SESSION['sessionToken'] =
      Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
}

कोड स्निपेट पहले जांच करता है कि AuthSub सत्र टोकन पहले से मौजूद है या नहीं. अगर यह't है, लेकिन यूआरएल में सिर्फ़ एक बार इस्तेमाल होने वाला टोकन दिया गया है, तो कोड स्निपेट एक बार इस्तेमाल होने वाला टोकन getAuthSubSessionToken तरीके से पास करता है. साथ ही, AuthSub इंटरफ़ेस एक सेशन टोकन दिखाता है. फिर कोड, सेशन टोकन वैल्यू को सेशन वैरिएबल $_SESSION['sessionToken'] में डाल देता है.

फिर आपका ऐप्लिकेशन बाद के इंटरैक्शन वाले Blogger में सत्र टोकन मान का इस्तेमाल कर सकता है. आप Zend_Gdata_AuthSub::getHttpClient तरीके का इस्तेमाल करके Zend_Http_Clientऑब्जेक्ट पा सकते हैं. इसमें AuthSub क्रेडेंशियल शामिल करने के लिए, Authorization हेडर प्रीसेट मौजूद होता है:

$client = Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']);

क्लाइंट लॉगिन उपयोगकर्ता नाम/पासवर्ड की पुष्टि करना

अगर आपका क्लाइंट स्टैंडअलोन, सिंगल-उपयोगकर्ता और इंस्टॉल किया गया" क्लाइंट (जैसे कि एक डेस्कटॉप ऐप्लिकेशन) है, तो ClientLogin पुष्टि का इस्तेमाल करें.

दिए गए कोड में Zend_Gdata_ClientLogin::getHttpClient मैथड का इस्तेमाल करके, ClientLogin सेवा के लिए अनुरोध करने, ऑथेंटिकेशन टोकन पाने, और पुष्टि करने वाले सही हेडर के साथ Zend_Http_Client ऑब्जेक्ट बनाने के लिए कहा जाता है. इसके बाद, इस तरीके से दिए गए HttpClient का इस्तेमाल, Zend_Gdata सेवा ऑब्जेक्ट बनाने के लिए किया जाता है.

ध्यान दें कि $accountType साफ़ तौर पर GOOGLE पर सेट है. इस पैरामीटर को सेट न करने से, G Suite के उपयोगकर्ताओं को Blogger एपीआई का इस्तेमाल करने से रोक दिया जाएगा.

$user = 'user@example.com';
$pass = 'secretPasswd';
$service = 'blogger';

$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service, null,
        Zend_Gdata_ClientLogin::DEFAULT_SOURCE, null, null,
        Zend_Gdata_ClientLogin::CLIENTLOGIN_URI, 'GOOGLE');
$gdClient = new Zend_Gdata($client);

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

ध्यान दें: किसी दिए गए सेशन में सभी अनुरोधों के लिए एक ही टोकन का इस्तेमाल करें. Blogger के हर अनुरोध के लिए नया टोकन न पाएं.

नोट: जैसा कि ClientLogin दस्तावेज़ में बताया गया है, पुष्टि का अनुरोध पूरा नहीं हो सकता और कैप्चा चुनौती का अनुरोध कर सकता है. अगर आप चाहते हैं कि Google, कैप्चा चुनौती को जारी करे और उसका जवाब दे, तो उपयोगकर्ता को https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (क्लाइंट लॉगिन दस्तावेज़ में दिए गए कैप्चा-हैंडलिंग यूआरएल के बजाय) भेजें.

ब्लॉग की सूची फ़ेच की जा रही है

Blogger डेटा एपीआई में एक फ़ीड होता है, जो किसी खास उपयोगकर्ता के ब्लॉग की सूची बनाता है; उस फ़ीड को "metafeed.&quot कहा जाता है;

नीचे दिया गया सैंपल कोड, $gdClientफ़ीड का इस्तेमाल करके, मेटाफ़ीड को फिर से पाने और हर ब्लॉग के शीर्षक को प्रिंट करने के लिए करता है.

Zend_Gdata_Query क्लास, क्वेरी यूआरएल बनाने का काम करती है. इस मामले में कुछ और करने की ज़रूरत नहीं है. हालांकि, इस दस्तावेज़ के क्वेरी पैरामीटर से पोस्ट वापस लाना सेक्शन में, Query क्लास की ज़रूरत साफ़ तौर पर दिखेगी.

function printAllBlogs()
{
  $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/default/blogs');
  $feed = $gdClient->getFeed($query);
  printFeed($feed);
}

function printFeed($feed)
{
  $i = 0;
  foreach($feed->entries as $entry) {
    print $i ." ". $entry->title->text . "\n";
    $i++;
  }
}

ध्यान दें कि getFeed तरीके से इस्तेमाल किया गया यूआरएल. यह डिफ़ॉल्ट मेटाफ़ीड यूआरएल है; यह मौजूदा समय में पुष्टि किए गए उपयोगकर्ता के लिए ब्लॉग की एक सूची दिखाता है. किसी दूसरे उपयोगकर्ता के फ़ीड को ऐक्सेस करने के लिए, मेटाफ़ीड यूआरएल में default की जगह, उपयोगकर्ता का आईडी डाला जा सकता है. उपयोगकर्ता का आईडी, उपयोगकर्ता के प्रोफ़ाइल यूआरएल के आखिर में अंकों की स्ट्रिंग होती है.

नीचे दिए गए कोड के स्निपेट से पता चलता है कि फ़ीड से ब्लॉग आईडी कैसे निकाली जाए. पोस्ट और टिप्पणियां बनाने, अपडेट करने, और मिटाने की कार्रवाई करने के लिए आपको ब्लॉग आईडी की ज़रूरत पड़ेगी. $index वैरिएबल बताता है कि उपयोगकर्ता के ब्लॉग के किस ब्लॉग का इस्तेमाल किया जा रहा है. id फ़ील्ड tag:blogger.com,1999:user-userID.blog-blogID को लेता है, इसलिए '-' ;split पर ब्लॉग आईडी, मिलती-जुलती श्रेणी के आखिरी एलिमेंट में ब्लॉग आईडी डालता है.

$idText = split('-', $feed->entries[$index]->id->text);
$blogID = $idText[2];

पोस्ट बनाना

Blogger के डेटा एपीआई का इस्तेमाल करके, आप नई ब्लॉग एंट्री बना सकते हैं और प्रकाशित कर सकते हैं. साथ ही, आप एंट्री के ड्राफ़्ट भी बना सकते हैं.

ध्यान दें: फ़िलहाल, पोस्ट के लिए पसंद के मुताबिक लेखक सेट करने की सुविधा मौजूद नहीं है. सभी नई पोस्ट इस तरह दिखाई देंगी जैसे कि उन्हें हाल ही में पुष्टि किए गए उपयोगकर्ता ने बनाया है.

ब्लॉग पोस्ट पब्लिश करना

नई ब्लॉग एंट्री पब्लिश करने के लिए, PHP क्लाइंट लाइब्रेरी का इस्तेमाल किया जा सकता है.

सबसे पहले, ब्लॉग पोस्ट के बारे में बताने के लिए, एक एंट्री इंस्टेंस बनाएं. इसके बाद, आप ब्लॉग पोस्ट का शीर्षक, कॉन्टेंट, और अन्य एट्रिब्यूट सेट कर सकते हैं. आखिर में, पोस्ट डालने के लिए insertEntry तरीका कॉल करें. नए Zend_Gdata_Entry, Zend_Gdata_App_Extension_Title, और Zend_Gdata_App_Extension_Contentऑब्जेक्ट के लिए, आप यहां मैग्टिक फ़ैक्ट्री इंस्टैंशिएशन देख सकते हैं.

function createPublishedPost($title='Hello, world!', $content='I am blogging on the internet.')
{
  $uri = 'http://www.blogger.com/feeds/' . $blogID . '/posts/default';
  $entry = $gdClient->newEntry();
  $entry->title = $gdClient->newTitle($title);
  $entry->content = $gdClient->newContent($content);
  $entry->content->setType('text');

  $createdPost = $gdClient->insertEntry($entry, $uri);
  $idText = split('-', $createdPost->id->text);
  $newPostID = $idText[2];

  return $newPostID;
}

ड्राफ़्ट ब्लॉग पोस्ट बनाना

ड्राफ़्ट पोस्ट, सार्वजनिक पोस्ट की तरह ही बनाई जाती हैं, लेकिन आपको एंट्री ऑब्जेक्ट का ड्राफ़्ट एट्रिब्यूट सेट करना होगा. आप हाइलाइट की गई लाइनों को जोड़कर, ड्राफ़्ट के तौर पर ऊपर दी गई ब्लॉग पोस्ट की तरह ब्लॉग पोस्ट बना सकते हैं:

function createDraftPost($title='Salutations, world!', $content='Hmm ... not quite right, must rework the title later.')
{
  $uri = 'http://www.blogger.com/feeds/' . $blogID . '/posts/default';
  $entry = $gdClient->newEntry();

  $entry->title = $gdClient->newTitle(trim($title));
  $entry->content = $gdClient->newContent($content);
  $entry->content->setType('text');

  $control = $gdClient->newControl();
  $draft = $gdClient->newDraft('yes');
  $control->setDraft($draft);
  $entry->control = $control;

  $createdPost = $gdClient->insertEntry($entry, $uri);
  $idText = split('-', $createdPost->id->text);
  return $idText[2];
}

किसी पोस्ट का शीर्षक या कॉन्टेंट सेट करने के जैसा ही, नया Zend_Gdata_App_Extension_Control और Zend_Gdata_App_Extension_Draft ऑब्जेक्ट बनाया जाता है और उन्हें एंट्री और कंट्रोल कंट्रोल एट्रिब्यूट के लिए असाइन किया जाता है.

आप ड्राफ़्ट पोस्ट को पुनर्प्राप्त करके, ड्राफ़्ट विशेषता को no पर सेट करके और फिर पोस्ट को अपडेट करके किसी मौजूदा ड्राफ़्ट ब्लॉग पोस्ट को प्रकाशित पोस्ट में बदल सकते हैं. हम अगले दो सेक्शन में, पोस्ट को फिर से पाने और अपडेट करने के बारे में बात करेंगे.

पोस्ट फ़ेच की जा रही हैं

नीचे दिए गए सेक्शन में, क्वेरी पैरामीटर के साथ और उसके बिना भी ब्लॉग पोस्ट की सूची पाने का तरीका बताया गया है.

पुष्टि किए बिना, Blogger के सार्वजनिक फ़ीड के बारे में क्वेरी की जा सकती है. इसलिए, आपको किसी सार्वजनिक ब्लॉग से पोस्ट वापस लाने से पहले क्रेडेंशियल सेट करने या पुष्टि करने की ज़रूरत नहीं पड़ती है.

सभी ब्लॉग पोस्ट वापस पाई जा रही हैं

उपयोगकर्ता की पोस्ट फिर से पाने के लिए, उसी getFeed तरीके को कॉल करें जिसका इस्तेमाल, ब्लॉग मेटाफ़ीड को वापस पाने के लिए किया गया है. हालांकि, इस बार ब्लॉग पोस्ट फ़ीड का यूआरएल भेजें:

function printAllPosts($gdClient, $blogID)
{
  $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $blogID . '/posts/default');
  $feed = $gdClient->getFeed($query);
  printFeed($feed);
}

क्वेरी पैरामीटर का इस्तेमाल करके, पोस्ट को वापस लाया जा रहा है

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

उदाहरण के लिए, तारीख की सीमा की क्वेरी भेजने के लिए, क्वेरी ऑब्जेक्ट में published-min और published-max पैरामीटर सेट करें. नीचे दिए गए कोड स्निपेट, दिए गए समय और खत्म होने के समय के बीच प्रकाशित हर ब्लॉग पोस्ट के शीर्षक और कॉन्टेंट को प्रिंट करते हैं:

function printPostsInDateRange($gdClient, $blogID, $startDate='2007-04-01', $endDate='2007-04-25')
{
  $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $blogID . '/posts/default');
  $query->setParam('published-min', $startDate);
  $query->setParam('published-max', $endDate);

  $feed = $gdClient->getFeed($query);
  printFeed($feed);
}

Zend_Gdata_Query क्लास के लिए डीबग करने का उपयोगी तरीका getQueryUrl() है, जो आपको कोड में बदला गया यूआरएल दिखाएगा.

ध्यान दें: फ़िलहाल, published-min और published-max क्वेरी पैरामीटर के लिए कोई मैजिक सेटर नहीं है. हालांकि, setStartIndex और setMaxResults का इस्तेमाल किया जा सकता है.

Blogger डेटा एपीआई में इन क्वेरी पैरामीटर का इस्तेमाल किया जा सकता है:

श्रेणियां
फ़ीड के नतीजों को फ़िल्टर करने के लिए, कैटगरी (इसे लेबल भी कहा जाता है) के बारे में बताता है. उदाहरण के लिए, http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie, Fritz और Laurie, दोनों लेबल के साथ एंट्री दिखाता है.
ज़्यादा से ज़्यादा नतीजे
लौटाए जाने वाले सामान की ज़्यादा से ज़्यादा संख्या.
पब्लिश-मिनट, published-max
एंट्री की तारीख, प्रकाशन की तारीख पर लागू होती है.
स्टार्ट-इंडेक्स
पहले नतीजे के लिए हासिल किया गया एक अंकों वाला इंडेक्स (पेजिंग के लिए).

क्वेरी पैरामीटर के बारे में ज़्यादा जानने के लिए, Blogger डेटा एपीआई के रेफ़रंस की गाइड और Google डेटा एपीआई के रेफ़रंस की गाइड देखें.

पोस्ट अपडेट की जा रही हैं

किसी मौजूदा ब्लॉग पोस्ट को अपडेट करने के लिए, पहले आपको वह एंट्री मिलती है जिसे आप अपडेट करना चाहते हैं, फिर आप उसमें बदलाव करते हैं और फिर save तरीके का इस्तेमाल करके उसे Blogger पर भेजते हैं. नीचे दिए गए कोड स्निपेट, ब्लॉग एंट्री के शीर्षक और कॉन्टेंट में बदलाव करते हैं. वे ऐसा मानते हैं कि आपने सर्वर से एंट्री वापस ले ली है.

public function updatePost($postID, $updatedTitle='Hello, World?',
                           $updatedContent='UPDATE: Still blogging',
                           $isDraft=False)
{
  $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $blogID . '/posts/default/' . $postID);
  $postToUpdate = $dClient->getEntry($query);
  $postToUpdate->title->text = $this->gdClient->newTitle($updatedTitle);
  $postToUpdate->content->text = $this->gdClient->newContent($updatedContent);

  if ($isDraft) {
    $draft = $gdClient->newDraft('yes');
  } else {
    $draft = $gdClient->newDraft('no');
  }

  $control = $gdClient->newControl();
  $control->setDraft($draft);
  $postToUpdate->control = $control;

  $updatedPost = $postToUpdate->save();
  return $updatedPost;
}

ध्यान दें: फ़िलहाल, पोस्ट से जुड़े लेखक के डेटा में बदलाव नहीं किया जा सकता.

पोस्ट मिटाना

किसी पोस्ट को मिटाने के लिए, अपने $gdClient ऑब्जेक्ट पर delete तरीके से पोस्ट और # यूआरएल में बदलाव करें, इस तरह से:

public function deletePost($gdClient, $blogID, $postID)
{
  $uri = 'http://www.blogger.com/feeds/' . $blogID . '/posts/default/' . $postID;
  $gdClient->delete($uri);
}

टिप्पणियां

Blogger के डेटा एपीआई से टिप्पणियां बनाने, वापस पाने, और मिटाने की सुविधा मिलती है. टिप्पणियां अपडेट करना काम नहीं करता है (न ही यह वेब इंटरफ़ेस में उपलब्ध है).

टिप्पणियां बनाना

टिप्पणी पोस्ट करने के लिए, एंट्री ऑब्जेक्ट बनाएं और उसे इस तरह डालें:

function createComment($gdClient, $blogID, $postID, $commentText)
{
  $uri = 'http://www.blogger.com/feeds/' . $blogID . '/' . $postID . '/comments/default';

  $newComment = $gdClient->newEntry();
  $newComment->content = $gdClient->newContent($commentText);
  $newComment->content->setType('text');
  $createdComment = $gdClient->insertEntry($newComment, $uri);

  $editLink = split('/', $createdComment->getEditLink()->href);
  $newCommentID = $editLink[8];

  return $newCommentID; 
}

ध्यान दें: फ़िलहाल, आप सिर्फ़ उस ब्लॉग पर टिप्पणी पोस्ट कर सकते हैं जिसके मालिकाना हक की पुष्टि हो चुकी है.

ध्यान दें: फ़िलहाल, टिप्पणियों के लिए कस्टम लेखक सेट करने की सुविधा मौजूद नहीं है. सभी नई टिप्पणियां इस तरह दिखेंगी, जैसे उन्हें मौजूदा उपयोगकर्ता ने बनाया है.

टिप्पणियां वापस पाई जा रही हैं

आप किसी खास पोस्ट पर की गई टिप्पणियों को फ़ीड के यूआरएल के फ़ीड से दोबारा हासिल कर सकते हैं:

public function printPostComments($gdClient, $blogID, $postID)
{
  $query = new Zend_Gdata_Query('http://www.blogger.com/feeds/' . $blogID . '/' . $postID . '/comments/default');
  $feed = $gdClient->getFeed($query);
  $printFeed($feed);
}

या आप ब्लॉग के टिप्पणी फ़ीड यूआरएल का इस्तेमाल करके सभी पोस्ट से टिप्पणियां पा सकते हैं:

http://www.blogger.com/feeds/blogID/comments/default

टिप्पणियां मिटाना

किसी टिप्पणी को मिटाने के लिए, टिप्पणी और #39;s के यूआरएल में बदलाव करें. ऐसा करने के लिए, अपने $gdClient ऑब्जेक्ट में, delete तरीके का इस्तेमाल करें:

public function deleteComment($gdClient, $blogID, $postID, $commentID)
{
  $uri = 'http://www.blogger.com/feeds/' . $blogID . '/' . $postID . '/comments/default/' . $commentID;
  $gdClient->delete($uri);
}

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