বিকাশকারীর গাইড: পিএইচপি

ব্লগার ডেটা API ক্লায়েন্ট অ্যাপ্লিকেশনগুলিকে Google ডেটা API ফিডের আকারে ব্লগার সামগ্রী দেখতে এবং আপডেট করার অনুমতি দেয়৷

আপনার ক্লায়েন্ট অ্যাপ্লিকেশন নতুন ব্লগ পোস্ট তৈরি করতে, বিদ্যমান ব্লগ পোস্টগুলি সম্পাদনা করতে বা মুছে ফেলতে এবং নির্দিষ্ট মানদণ্ডের সাথে মেলে এমন ব্লগ পোস্টগুলির জন্য অনুসন্ধান করতে Blogger Data API ব্যবহার করতে পারে৷

ব্লগার ডেটা এপিআই এর ক্ষমতার উপর কিছু পটভূমি প্রদান করার পাশাপাশি, এই নথিটি Zend Google Data APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করে মৌলিক ডেটা API ইন্টারঅ্যাকশনের উদাহরণ প্রদান করে। আপনি যদি লাইব্রেরি ব্যবহার করে এমন অন্তর্নিহিত প্রোটোকল সম্পর্কে আরও বুঝতে আগ্রহী হন তবে এই বিকাশকারীর গাইডের প্রোটোকল বিভাগটি দেখুন।

বিষয়বস্তু

  1. শ্রোতা
  2. শুরু হচ্ছে
    1. একটি ব্লগার অ্যাকাউন্ট তৈরি করা
    2. নমুনা কোড চলমান
    3. ম্যাজিক গেটার এবং সেটার্স ব্যবহার করে
    4. অন্যান্য সম্পদ
  3. ব্লগার পরিষেবাতে প্রমাণীকরণ করা হচ্ছে
    1. OAuth প্রমাণীকরণ
    2. AuthSub প্রক্সি প্রমাণীকরণ
    3. ক্লায়েন্টলগইন ব্যবহারকারীর নাম/পাসওয়ার্ড প্রমাণীকরণ
  4. ব্লগের একটি তালিকা পুনরুদ্ধার করা হচ্ছে
  5. পোস্ট তৈরি করা হচ্ছে
    1. একটি ব্লগ পোস্ট প্রকাশ
    2. একটি খসড়া ব্লগ পোস্ট তৈরি করা হচ্ছে
  6. পোস্ট পুনরুদ্ধার করা হচ্ছে
    1. সমস্ত ব্লগ পোস্ট পুনরুদ্ধার করা হচ্ছে
    2. ক্যোয়ারী প্যারামিটার ব্যবহার করে পোস্ট পুনরুদ্ধার করা হচ্ছে
  7. পোস্ট আপডেট করা হচ্ছে
  8. পোস্ট মুছে ফেলা হচ্ছে
  9. মন্তব্য
    1. মন্তব্য তৈরি করা হচ্ছে
    2. মন্তব্য পুনরুদ্ধার করা হচ্ছে
    3. মন্তব্য মুছে ফেলা হচ্ছে

শ্রোতা

এই নথিটি এমন প্রোগ্রামারদের জন্য যারা PHP ক্লায়েন্ট অ্যাপ্লিকেশন লিখতে চান যা ব্লগারের সাথে যোগাযোগ করতে পারে।

এই নথিটি অনুমান করে যে আপনি Google Data APIs প্রোটোকলের পিছনে সাধারণ ধারণাগুলি বোঝেন।

ক্লায়েন্ট লাইব্রেরি দ্বারা প্রদত্ত ক্লাস এবং পদ্ধতি সম্পর্কে তথ্যের জন্য, PHP ক্লায়েন্ট লাইব্রেরি API রেফারেন্স দেখুন। সাধারণ ব্লগার ডেটা API রেফারেন্স তথ্যের জন্য, প্রোটোকল রেফারেন্স গাইড দেখুন।

শুরু হচ্ছে

ক্লায়েন্ট লাইব্রেরি সেট আপ করতে সাহায্যের জন্য, শুরু করার নির্দেশিকা দেখুন।

Zend ক্লায়েন্ট লাইব্রেরির জন্য পিএইচপি 5.1.4 বা তার পরে প্রয়োজন। এটি Zend ফ্রেমওয়ার্কের অংশ হিসাবে এবং একটি পৃথক ডাউনলোড হিসাবে উপলব্ধ। ব্লগারের সাথে ইন্টারঅ্যাক্ট করতে, ক্লায়েন্ট লাইব্রেরির 1.0.0 বা পরবর্তী সংস্করণ ব্যবহার করুন।

একটি ব্লগার অ্যাকাউন্ট তৈরি করা

আপনি পরীক্ষার উদ্দেশ্যে একটি ব্লগার অ্যাকাউন্টের জন্য সাইন আপ করতে চাইতে পারেন। ব্লগার Google অ্যাকাউন্ট ব্যবহার করে, তাই আপনার যদি ইতিমধ্যেই একটি Google অ্যাকাউন্ট থাকে, তাহলে আপনি প্রস্তুত।

নমুনা কোড চলমান

এই নথিতে দেখানো সমস্ত নমুনা কোড সমন্বিত একটি সম্পূর্ণ কর্মক্ষম নমুনা ক্লায়েন্ট, Zend Framework SVN সংগ্রহস্থলে উপলব্ধ। নমুনাটি /framework/standard/trunk/demos/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');

ম্যাজিক গেটার এবং সেটার্স ব্যবহার করে

পিএইচপি ক্লায়েন্ট লাইব্রেরি জুড়ে, ডেভেলপারদের সুবিধার্থে ম্যাজিক সেটার/গেটারদের জন্য সমর্থন যোগ করা হয়েছে। এটি একটি ক্লাসের বৈশিষ্ট্যগুলিকে ঐতিহ্যগত সেটার/গেটার পদ্ধতি ব্যবহার করে বা বৈশিষ্ট্যগুলি অ্যাক্সেস করে নিরাপদে অ্যাক্সেস করার অনুমতি দেয়। উদাহরণস্বরূপ, যদি $gdataObject এই লাইব্রেরিতে একটি বস্তুর একটি উদাহরণ হয়, তাহলে কোডের নিম্নলিখিত দুটি লাইনের অভিন্ন প্রভাব রয়েছে:

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

একইভাবে, কোডের এই দুটি লাইনেরও অভিন্ন প্রভাব রয়েছে:

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

একইভাবে, ম্যাজিক ফ্যাক্টরি পদ্ধতি নতুন বস্তু ঘোষণা করা সহজ করে তোলে। Zend নামকরণ কনভেনশন দ্বারা বাধ্যতামূলক দীর্ঘ শ্রেণীর নামগুলি মনে রাখার পরিবর্তে, আপনি newObject(); কল করে একটি নতুন object তৈরি করতে পারেন। একটি Zend পরিষেবা ক্লায়েন্টের উপর। উদাহরণস্বরূপ, নিম্নলিখিত দুটি স্নিপেট উভয়ই একটি নতুন 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 Framework এর Google Data APIs কম্পোনেন্ট (Zend_Gdata):

ব্লগার পরিষেবাতে প্রমাণীকরণ করা হচ্ছে

আপনি ব্লগার ডেটা API ব্যবহার করে সর্বজনীন এবং ব্যক্তিগত উভয় ফিড অ্যাক্সেস করতে পারেন। পাবলিক ফিডের কোনো প্রমাণীকরণের প্রয়োজন হয় না, তবে সেগুলি শুধুমাত্র পঠনযোগ্য। আপনি যদি ব্লগগুলি সংশোধন করতে চান, তাহলে ব্যক্তিগত ফিডের অনুরোধ করার আগে আপনার ক্লায়েন্টকে প্রমাণীকরণ করতে হবে। এটি তিনটি পদ্ধতির যেকোনো একটি ব্যবহার করে প্রমাণীকরণ করতে পারে: OAuth প্রমাণীকরণ, AuthSub প্রক্সি প্রমাণীকরণ বা ClientLogin ব্যবহারকারীর নাম/পাসওয়ার্ড প্রমাণীকরণ।

সাধারণভাবে Google Data API-এর সাথে প্রমাণীকরণ সম্পর্কে আরও তথ্যের জন্য, প্রমাণীকরণ ডকুমেন্টেশন দেখুন।

এই নথির পরবর্তী বিভাগে বেশিরভাগ নমুনা ধরে নেয় যে আপনার কাছে $gdClient নামে একটি প্রমাণীকৃত ক্লায়েন্ট অবজেক্ট আছে।

OAuth প্রমাণীকরণ

Zend PHP GData লাইব্রেরি ব্যবহার করে OAuth প্রমাণীকরণ সম্পর্কে ডকুমেন্টেশনের জন্য, অনুগ্রহ করে Google ডেটা প্রোটোকল ক্লায়েন্ট লাইব্রেরিতে OAuth দেখুন।

AuthSub প্রক্সি প্রমাণীকরণ

AuthSub প্রক্সি প্রমাণীকরণ এমন ওয়েব অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয় যেগুলিকে তাদের ব্যবহারকারীদের Google অ্যাকাউন্টগুলিতে প্রমাণীকরণ করতে হবে৷ ব্লগার ব্যবহারকারীর জন্য ওয়েবসাইট অপারেটর এবং ক্লায়েন্ট কোডের ব্যবহারকারীর নাম এবং পাসওয়ার্ডের অ্যাক্সেস নেই; পরিবর্তে, ক্লায়েন্ট বিশেষ AuthSub টোকেন পায় যা ক্লায়েন্টকে একটি নির্দিষ্ট ব্যবহারকারীর পক্ষে কাজ করার অনুমতি দেয়। আরো বিস্তারিত তথ্যের জন্য, AuthSub ডকুমেন্টেশন দেখুন।

যখন একজন ব্যবহারকারী প্রথম আপনার অ্যাপ্লিকেশন পরিদর্শন করেন, তখন তাদের এখনও প্রমাণীকরণ করা হয়নি। এই ক্ষেত্রে, আপনাকে কিছু তথ্য এবং একটি লিঙ্ক প্রদর্শন করতে হবে যা ব্যবহারকারীকে তাদের ব্লগে অ্যাক্সেসের জন্য আপনার অনুরোধকে প্রমাণীকরণ করতে একটি Google পৃষ্ঠায় নির্দেশ করে। Zend ক্লায়েন্ট লাইব্রেরি Google পৃষ্ঠার URL তৈরি করার জন্য একটি ফাংশন প্রদান করে। নীচের কোডটি AuthSubRequest পৃষ্ঠার URL পুনরুদ্ধার করে:

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 হ্যান্ডলার দ্বারা ব্যবহৃত ক্যোয়ারী প্যারামিটারের সাথে সম্পর্কিত):

পরবর্তী
পৃষ্ঠার URL যেটি Google প্রমাণীকরণের পরে ব্যবহারকারীকে রিডাইরেক্ট করবে।
সুযোগ
ইঙ্গিত করে যে অ্যাপ্লিকেশনটি ব্লগার ফিড অ্যাক্সেস করার জন্য একটি টোকেন অনুরোধ করছে৷ ব্যবহার করার সুযোগ স্ট্রিং হল http://www.blogger.com/feeds/ (ইউআরএল-এনকোডেড, অবশ্যই)।
নিরাপদ
ক্লায়েন্ট একটি নিরাপদ টোকেন অনুরোধ করছে কিনা তা নির্দেশ করে।
অধিবেশন
ফেরত দেওয়া টোকেনটি বহু-ব্যবহারের (সেশন) টোকেনের জন্য বিনিময় করা যেতে পারে কিনা তা নির্দেশ করে।

উপরের উদাহরণটি এমন একটি কল দেখায় যা একটি সুরক্ষিত টোকেনের অনুরোধ করে না ( secure এর মান false )। ফলে অনুরোধ URL এর মত দেখতে হতে পারে:

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 URL-এর next ক্যোয়ারী প্যারামিটারে নির্দিষ্ট করা URL-এ পুনঃনির্দেশ করে। AuthSub সিস্টেম সেই URL-এ একটি প্রমাণীকরণ টোকেন যুক্ত করে, 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 সেশন টোকেন ইতিমধ্যে উপস্থিত আছে কিনা। যদি এটি না হয়, কিন্তু URL-এ একটি একক-ব্যবহারের টোকেন নির্দিষ্ট করা থাকে, তাহলে কোড স্নিপেটটি getAuthSubSessionToken পদ্ধতিতে একবার-ব্যবহারের টোকেনটি পাস করে এবং AuthSub ইন্টারফেস একটি সেশন টোকেন প্রদান করে। কোডটি তারপর সেশন ভেরিয়েবল $_SESSION['sessionToken'] এ সেশন টোকেন মান রাখে।

আপনার অ্যাপ্লিকেশন তারপর ব্লগারের সাথে পরবর্তী মিথস্ক্রিয়াতে সেশন টোকেন মান ব্যবহার করতে পারে। আপনি একটি Zend_Http_Client অবজেক্ট পেতে Zend_Gdata_AuthSub::getHttpClient পদ্ধতি ব্যবহার করতে পারেন যাতে 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 API ব্যবহার করতে পারবেন না।

$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);

নমুনা অনুরোধ এবং প্রতিক্রিয়া সহ ClientLogin প্রমাণীকরণ সম্পর্কে আরও তথ্যের জন্য, ইনস্টল করা অ্যাপ্লিকেশন ডকুমেন্টেশনের জন্য প্রমাণীকরণ দেখুন।

দ্রষ্টব্য : একটি প্রদত্ত সেশনে সমস্ত অনুরোধের জন্য একই টোকেন ব্যবহার করুন; প্রতিটি ব্লগার অনুরোধের জন্য একটি নতুন টোকেন অর্জন করবেন না।

দ্রষ্টব্য : ClientLogin ডকুমেন্টেশনে বর্ণিত হিসাবে, প্রমাণীকরণ অনুরোধ ব্যর্থ হতে পারে এবং একটি ক্যাপচা চ্যালেঞ্জের অনুরোধ করতে পারে। আপনি যদি চান যে Google ক্যাপচা চ্যালেঞ্জ ইস্যু করে এবং পরিচালনা করুক, তাহলে ব্যবহারকারীকে https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger এ পাঠান (ক্লায়েন্টলগইন ডকুমেন্টেশনে দেওয়া ক্যাপচা-হ্যান্ডলিং URL-এর পরিবর্তে)।

ব্লগের একটি তালিকা পুনরুদ্ধার করা হচ্ছে

ব্লগার ডেটা এপিআই একটি ফিড প্রদান করে যা একটি নির্দিষ্ট ব্যবহারকারীর জন্য ব্লগের তালিকা করে; সেই ফিডটি "মেটাফিড" নামে পরিচিত।

নিম্নলিখিত নমুনা কোড মেটাফিড পুনরুদ্ধার করতে একটি প্রমাণীকৃত $gdClient অবজেক্ট ব্যবহার করে এবং তারপর প্রতিটি ব্লগের শিরোনাম প্রিন্ট করে।

Zend_Gdata_Query ক্লাস ক্যোয়ারী URL তৈরি করার যত্ন নেয়। এই ক্ষেত্রে, কোনও অতিরিক্ত কাজ করার দরকার নেই, তবে এই নথির ক্যোয়ারী প্যারামিটার বিভাগে পোস্ট পুনরুদ্ধার করার মাধ্যমে 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 পদ্ধতি দ্বারা ব্যবহৃত URL টি নোট করুন। এটি ডিফল্ট মেটাফিড ইউআরএল; এটি বর্তমানে প্রমাণীকৃত ব্যবহারকারীর জন্য ব্লগের একটি তালিকা প্রদান করে। অন্য ব্যবহারকারীর জন্য একটি ফিড অ্যাক্সেস করতে, আপনি মেটাফিড ইউআরএলে default জায়গায় ব্যবহারকারীর আইডি রাখতে পারেন। ব্যবহারকারীর ID হল ব্যবহারকারীর প্রোফাইল URL-এর শেষে অঙ্কের স্ট্রিং।

নিচের কোডের স্নিপেটটি দেখায় কিভাবে ফিড থেকে একটি ব্লগ আইডি বের করতে হয়। পোস্ট এবং মন্তব্যগুলিতে তৈরি, আপডেট এবং মুছে ফেলার ক্রিয়াকলাপ সম্পাদন করতে আপনার ব্লগ আইডির প্রয়োজন হবে৷ $index ভেরিয়েবল প্রতিনিধিত্ব করে যে ব্যবহারকারীর ব্লগ ফিডে কোন ব্লগ ব্যবহার করা হচ্ছে। id ক্ষেত্রটি tag:blogger.com,1999:user-userID.blog- blogID ফর্ম নেয়, তাই '-' অক্ষরের একটি split ফলাফলের অ্যারের শেষ উপাদানটিতে ব্লগ আইডি রাখে।

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

পোস্ট তৈরি করা হচ্ছে

ব্লগার ডেটা API আপনাকে নতুন ব্লগ এন্ট্রি তৈরি এবং প্রকাশ করার পাশাপাশি এন্ট্রিগুলির খসড়া তৈরি করার অনুমতি দেয়৷

দ্রষ্টব্য : পোস্টের জন্য একটি কাস্টম লেখক সেট করা বর্তমানে সমর্থিত নয়৷ সমস্ত নতুন পোস্ট এমনভাবে প্রদর্শিত হবে যেন সেগুলি বর্তমানে প্রমাণীকৃত ব্যবহারকারী দ্বারা তৈরি করা হয়েছে৷

একটি ব্লগ পোস্ট প্রকাশ

আপনি নতুন ব্লগ এন্ট্রি প্রকাশ করতে 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 তে সেট করে এবং তারপর পোস্টটি আপডেট করে একটি বিদ্যমান খসড়া ব্লগ পোস্টকে একটি প্রকাশিত পোস্টে পরিণত করতে পারেন৷ আমরা পরবর্তী দুটি বিভাগে পোস্ট পুনরুদ্ধার এবং আপডেট কভার করব।

পোস্ট পুনরুদ্ধার করা হচ্ছে

নিম্নলিখিত বিভাগগুলি বর্ণনা করে যে কীভাবে ব্লগ পোস্টগুলির একটি তালিকা পুনরুদ্ধার করা যায়, ক্যোয়ারী প্যারামিটার সহ এবং ছাড়াই৷

আপনি প্রমাণীকরণ ছাড়াই একটি ব্লগার পাবলিক ফিড জিজ্ঞাসা করতে পারেন৷ তাই, কোনো পাবলিক ব্লগ থেকে পোস্ট পুনরুদ্ধার করার আগে আপনাকে প্রমাণপত্রাদি সেট করতে বা AuthSub প্রমাণীকরণ করতে হবে না।

সমস্ত ব্লগ পোস্ট পুনরুদ্ধার করা হচ্ছে

ব্যবহারকারীর পোস্ট পুনরুদ্ধার করতে, ব্লগ মেটাফিড পুনরুদ্ধার করতে ব্যবহৃত একই getFeed পদ্ধতিতে কল করুন, কিন্তু এবার ব্লগ-পোস্ট ফিড URL পাঠান:

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

ক্যোয়ারী প্যারামিটার ব্যবহার করে পোস্ট পুনরুদ্ধার করা হচ্ছে

ব্লগার ডেটা এপিআই আপনাকে নির্দিষ্ট মানদণ্ডের সাথে মেলে এমন একটি এন্ট্রির সেটের অনুরোধ করতে দেয়, যেমন একটি প্রদত্ত তারিখের পরিসরে প্রকাশিত বা আপডেট করা ব্লগ পোস্টের অনুরোধ করা। এটি করার জন্য, আপনি একটি ক্যোয়ারী অবজেক্ট তৈরি করুন এবং এটি 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() , যা আপনাকে এনকোড করা URL দেখাবে যা তৈরি করা হয়েছে।

দ্রষ্টব্য : published-min এবং published-max ক্যোয়ারী প্যারামিটারের জন্য বর্তমানে কোন ম্যাজিক সেটার নেই। যাইহোক, আপনি setStartIndex এবং setMaxResults ব্যবহার করতে পারেন।

ব্লগার ডেটা API নিম্নলিখিত ক্যোয়ারী প্যারামিটার সমর্থন করে:

বিভাগ
ফিড ফলাফল ফিল্টার করার জন্য বিভাগগুলি (লেবেল হিসাবেও পরিচিত) নির্দিষ্ট করে৷ উদাহরণস্বরূপ, http://www.blogger.com/feeds/ blogID /posts/default/-/Fritz/Laurie Fritz এবং Laurie উভয় লেবেল সহ এন্ট্রি ফেরত দেয়।
সর্বোচ্চ ফলাফল
ফেরত দেওয়ার জন্য সর্বাধিক সংখ্যক এন্ট্রি।
প্রকাশিত-মিনিট, প্রকাশিত-সর্বোচ্চ
এন্ট্রি প্রকাশনার তারিখের সীমানা।
শুরু-সূচক
প্রথম ফলাফলের 1-ভিত্তিক সূচক যা পুনরুদ্ধার করা হবে (পেজিংয়ের জন্য)।

ক্যোয়ারী প্যারামিটার সম্পর্কে আরও তথ্যের জন্য, ব্লগার ডেটা API রেফারেন্স গাইড এবং Google ডেটা API রেফারেন্স গাইড দেখুন।

পোস্ট আপডেট করা হচ্ছে

একটি বিদ্যমান ব্লগ পোস্ট আপডেট করতে, প্রথমে আপনি যে এন্ট্রিটি আপডেট করতে চান তা পুনরুদ্ধার করবেন, তারপরে আপনি এটি সংশোধন করবেন এবং তারপরে আপনি save পদ্ধতি ব্যবহার করে ব্লগারে পাঠাবেন। নিম্নলিখিত কোড স্নিপেটটি একটি ব্লগ এন্ট্রির শিরোনাম এবং বিষয়বস্তু পরিবর্তন করে, ধরে নিই যে আপনি ইতিমধ্যেই সার্ভার থেকে এন্ট্রিটি পুনরুদ্ধার করেছেন৷

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

দ্রষ্টব্য : পোস্টের সাথে যুক্ত লেখক ডেটা পরিবর্তন করা বর্তমানে সমর্থিত নয়।

পোস্ট মুছে ফেলা হচ্ছে

একটি পোস্ট মুছতে, পোস্টের সম্পাদনা URL আপনার $gdClient অবজেক্টের delete পদ্ধতিতে পাস করুন, এইভাবে:

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

মন্তব্য

ব্লগার ডেটা API মন্তব্যগুলি তৈরি, পুনরুদ্ধার এবং মুছে ফেলার অনুমতি দেয়৷ মন্তব্য আপডেট করা সমর্থিত নয় (এটি ওয়েব ইন্টারফেসে উপলব্ধ নয়)।

মন্তব্য তৈরি করা হচ্ছে

একটি মন্তব্য পোস্ট করতে, একটি এন্ট্রি অবজেক্ট তৈরি করুন এবং এটি নিম্নরূপ ঢোকান:

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

দ্রষ্টব্য : বর্তমানে, আপনি শুধুমাত্র প্রমাণীকৃত ব্যবহারকারীর মালিকানাধীন ব্লগে মন্তব্য পোস্ট করতে পারেন।

দ্রষ্টব্য : মন্তব্যের জন্য একটি কাস্টম লেখক সেট করা বর্তমানে সমর্থিত নয়৷ সমস্ত নতুন মন্তব্য এমনভাবে প্রদর্শিত হবে যেন সেগুলি বর্তমানে প্রমাণীকৃত ব্যবহারকারী দ্বারা তৈরি করা হয়েছে৷

মন্তব্য পুনরুদ্ধার করা হচ্ছে

আপনি পোস্টের মন্তব্য ফিড URL থেকে একটি নির্দিষ্ট পোস্টের জন্য মন্তব্য পুনরুদ্ধার করতে পারেন:

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);
}

অথবা আপনি ব্লগের মন্তব্য ফিড URL ব্যবহার করে সমস্ত পোস্ট থেকে মন্তব্য পেতে পারেন:

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

মন্তব্য মুছে ফেলা হচ্ছে

একটি মন্তব্য মুছে ফেলতে, মন্তব্যের সম্পাদনা URL আপনার $gdClient অবজেক্টের delete পদ্ধতিতে পাস করুন:

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

উপরে ফিরে যান