دليل مطوّري البرامج: لغة PHP

تتيح واجهة برمجة التطبيقات Blogger Data API لتطبيقات العملاء عرض محتوى Blogger وتحديثه على شكل خلاصات Google Data API.

يمكن أن يستخدم تطبيق العميل واجهة برمجة التطبيقات Blogger Blogger لإنشاء مشاركات مدونة جديدة، وتعديل مشاركات المدونة الحالية أو حذفها، وإجراء طلب بحث عن مشاركات المدونة التي تطابق معايير معينة.

بالإضافة إلى تقديم بعض المعلومات الأساسية حول إمكانات واجهة برمجة التطبيقات Blogger Data API، يقدّم هذا المستند أمثلة على تفاعلات واجهة برمجة التطبيقات الأساسية للبيانات باستخدام مكتبة برامج واجهة برمجة تطبيقات Zend Google Data. إذا كنت مهتمًا بمعرفة المزيد عن البروتوكول الأساسي الذي تستخدمه المكتبة، ارجع إلى قسم البروتوكول في دليل مطوّر البرامج هذا.

المحتويات

الجمهور

هذا المستند مخصّص للمبرمجين الذين يريدون كتابة تطبيقات عميل PHP يمكنها التفاعل مع Blogger.

يفترض هذا المستند أنك تفهم الأفكار العامة وراء بروتوكول Google Data APIs.

للحصول على معلومات مرجعية حول الفئات والطرق التي تقدّمها مكتبة العملاء، يمكنك الاطّلاع على مرجع واجهة برمجة التطبيقات لمكتبة العميل. للحصول على معلومات عامة عن واجهة برمجة التطبيقات المرجعية في Blogger، يُرجى الاطلاع على دليل مرجعي للبروتوكول.

البدء

للحصول على مساعدة في إعداد مكتبة العميل، يمكنك الاطّلاع على دليل البدء.

تتطلّب مكتبة عميل Zend استخدام الإصدار 5.1.4 أو إصدار أحدث من PHP. يتوفر كجزء من إطار عمل Zend وكذلك كعملية تنزيل منفصلة. للتفاعل مع Blogger، استخدم الإصدار 1.0.0 أو إصدارًا أحدث من مكتبة العميل.

إنشاء حساب Blogger

ننصحك بالاشتراك في حساب Blogger لأغراض الاختبار. تستخدم خدمة Blogger حسابات Google، لذلك إذا كان لديك حساب Google، ستكون جاهزًا.

جارٍ تنفيذ نموذج الرمز

يحتوي نموذج العميل الذي يعمل بشكل كامل على جميع نماذج التعليمات البرمجية المعروضة في هذا المستند في مستودع SVN لإطار العمل. يتوفّر النموذج في /framework/standard/trash/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');

استخدام أدوات السحر والضبط

على مستوى مكتبة العميل بلغة PHP، تمت إضافة الدعم لأدوات إعداد النصوص السحرية في البداية، وذلك لمطوّري البرامج. تسمح هذه الخاصية بالوصول إلى خصائص الفئة باستخدام طرق الإعداد/الالحصول التقليدية أو عن طريق الوصول إلى الخصائص. على سبيل المثال، إذا كانت السمة $gdataObject مثالاً لأحد العناصر في هذه المكتبة، سيكون لسطرَي الرمز التاليَين تأثيرات متطابقة:

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

وبالمثل، يمتلك هذان السطران من الرمز تأثيرات متطابقة أيضًا:

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

وبالمثل، تسهّل الطرق المصنعة السحرية الإعلان عن العناصر الجديدة. بدلاً من تذكّر أسماء الفئات الطويلة التي تفرضها اصطلاح تسمية Zend، يمكنك إنشاء object جديد من خلال الاتصال بـ newObject(); على برنامج خدمة 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();

تُعدّ الإعدادات/الماكينات والمصانع السحرية اختيارية، لذا استخدم الطريقة الأفضل لك.

مراجع أخرى

موارد أخرى لمكوّن Google Data API الخاص بـ Zend Framework' (Zend_Gdata):

المصادقة مع خدمة Blogger

يمكنك الوصول إلى كلٍّ من الخلاصات العامة والخاصة باستخدام واجهة برمجة التطبيقات Data Blogger. ولا تتطلب الخلاصات العلنية أي مصادقة، ولكنها للقراءة فقط. وإذا كنت تريد تعديل المدونات، فيجب على العميل المصادقة قبل طلب الخلاصات الخاصة. ويمكنه المصادقة باستخدام أي من الطرق الثلاث التالية: مصادقة OAuth أو مصادقة الخادم الوكيل AuthSub أو مصادقة اسم المستخدم أو كلمة مرور ClientLogin.

ولمزيد من المعلومات عن المصادقة باستخدام واجهات برمجة التطبيقات للبيانات في Google بشكل عام، يمكنك الاطّلاع على مستندات المصادقة.

تفترض معظم النماذج في الأقسام اللاحقة من هذا المستند أن لديك كائن عميل تمت مصادقته واسمه $gdClient.

مصادقة OAuth

للاطّلاع على مستندات حول مصادقة OAuth باستخدام مكتبة GendPH GData ، يُرجى الاطّلاع على OAuth في مكتبات عميل بروتوكول بيانات Google.

مصادقة الخادم الوكيل AuthSub

تستخدم تطبيقات الويب التي تحتاج إلى مصادقة مستخدميها في حسابات Google لمصادقة الخادم الوكيل AuthSub. لا يمكن لعامل الموقع الإلكتروني ورمز العميل الوصول إلى اسم المستخدم وكلمة المرور لمستخدم Blogger، وبدلاً من ذلك، يحصل العميل على رموز AuthSub خاصة تسمح للعميل بالتصرف نيابةً عن مستخدم معيّن. للحصول على معلومات أكثر تفصيلاً، يُرجى الاطّلاع على وثائق OAuthSub.

وعند زيارة المستخدم لتطبيقك للمرة الأولى، لم تتم مصادقتها بعد. في هذه الحالة، عليك عرض بعض المعلومات ورابط ينقل المستخدم إلى صفحة Google لمصادقة طلبك للدخول إلى مدوناته. توفّر مكتبة عملاء Zend وظيفة لإنشاء عنوان URL لصفحة Google. يسترد الرمز التالي عنوان URL لصفحة 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):

التالي
عنوان URL للصفحة التي يجب أن يُعيد Google توجيه المستخدم إليها بعد المصادقة.
نطاق
يشير هذا الإعداد إلى أن التطبيق يطلب رمزًا مميزًا للوصول إلى خلاصات Blogger. سلسلة النطاق المطلوب استخدامها هي http://www.blogger.com/feeds/ (ترميز عنوان URL بالطبع).
آمن
يشير هذا الإعداد إلى ما إذا كان العميل يطلب رمزًا مميزًا آمنًا.
جلسة
يشير هذا الإعداد إلى ما إذا كان من الممكن استبدال الرمز المميّز المعروض برمز مميّز متعدد الاستخدامات (الجلسة).

يوضّح المثال أعلاه مكالمة لا تطلب رمزًا مميزًا آمنًا (قيمة 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 توجيهه إلى عنوان URL الذي حدّدته في معلَمة طلب البحث next لعنوان URL AuthSubRequest. يُلحِق نظام AuthSub رمزًا مميزًا للمصادقة بعنوان URL هذا، باعتباره قيمة معلمة طلب البحث token. مثلاً:

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

يمكنك استرداد قيمة الرمز المميز باستخدام $_GET['token'].

تمثّل قيمة الرمز المميّز هذا رمزًا مميّزًا للاستخدام لمرة واحدة. في هذا المثال، بعد تحديد $session = true، يمكن استبدال هذا الرمز المميّز برمز مميّز لجلسة AuthSub باستخدام طريقة Zend_Gdata_AuthSub::getAuthSubSessionToken التي تطلب خدمة AuthSubSessionToken:

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

يتحقق مقتطف الرمز أولاً مما إذا كان هناك رمز مميز لجلسة AuthSub أم لا. وإذا لم يكن الرمز مميزًا، ولكن تم تحديد رمز مميز يُستخدم لمرة واحدة في عنوان URL، يتم هنا تمرير المقتطف المخصّص للرمز المميّز الذي يُستخدم لمرة واحدة إلى طريقة getAuthSubSessionToken، وتعرض واجهة AuthSub رمزًا مميزًا للجلسة. وبعد ذلك، يضع الرمز قيمة الرمز المميّز للجلسة في متغيّر الجلسة $_SESSION['sessionToken'].

يمكن للتطبيق بعد ذلك استخدام قيمة الرمز المميز للجلسة في التفاعلات اللاحقة مع Blogger. يمكنك استخدام الطريقة Zend_Gdata_AuthSub::getHttpClient للحصول على كائن Zend_Http_Client تم ضبطه مسبقًا على عنوان Authorization لتضمين بيانات اعتماد AuthSub:

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

مصادقة اسم المستخدم/كلمة المرور ClientLogin

استخدام مصادقة ClientLogin إذا كان البرنامج عميلاً مستقلاً لمستخدم واحد "installed;quot;; (مثل تطبيق سطح مكتب).

يستخدم الرمز التالي طريقة 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);

لمزيد من المعلومات حول مصادقة ClientLogin، بما في ذلك نماذج الطلبات والردود، راجع مستندات المصادقة للتطبيقات المثبّتة.

ملاحظة: يمكنك استخدام الرمز المميّز نفسه لجميع الطلبات في جلسة معيّنة، مع عدم الحصول على رمز مميّز جديد لكل طلب من طلبات Blogger.

ملاحظة: كما هو موضّح في مستندات ClientLogin، قد يفشل طلب المصادقة وطلب اختبار CAPTCHA. إذا أردت أن تصدر Google تحدي اختبار CAPTCHA وتعالجه، أرسِل المستخدم إلى https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (بدلاً من إرسال عنوان URL لالتعامل مع اختبار CAPTCHA المذكور في مستندات ClientLogin).

استرداد قائمة المدونات

توفر واجهة برمجة التطبيقات لبيانات Blogger خلاصة تسرد المدونات لمستخدم محدد، وتُعرف هذه الخلاصة باسم "metafeed.&quot.

يستخدم نموذج الرمز التالي كائن $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++;
  }
}

لاحظ عنوان URL الذي تستخدمه الطريقة getFeed. هذا هو عنوان URL التلقائي للخلاصة، ويعرض قائمة بالمدونات للمستخدم الذي تمت مصادقته حاليًا. للوصول إلى خلاصة لمستخدم آخر، يمكنك وضع رقم تعريف المستخدم بدلاً من default في عنوان URL للخلاصة الوصفية. رقم تعريف المستخدم هو سلسلة الأرقام التي تظهر في نهاية عنوان URL للملف الشخصي للمستخدم.

يوضح مقتطف الرمز أدناه كيفية استخراج معرّف مدونة من الخلاصة. ستحتاج إلى رقم تعريف المدونة لإجراء عمليات الإنشاء والتحديث والحذف على المشاركات والتعليقات. يمثّل المتغير $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 بدون مصادقة. لذلك، لا تحتاج إلى ضبط بيانات الاعتماد أو إجراء مصادقة 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);
}

استرداد المشاركات باستخدام معلمات طلب البحث

تتيح لك واجهة برمجة التطبيقات لبيانات 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()، والتي ستعرض لك عنوان URL المشفّر الذي تم إنشاؤه.

ملاحظة: لا تتوفّر حاليًا أدوات ضبط سحرية لمعلّمات طلب البحث published-min وpublished-max. ويمكنك استخدام setStartIndex وsetMaxResults.

تتيح واجهة برمجة التطبيقات Blogger لبيانات واجهة برمجة التطبيقات طلبات البحث التالية:

فئات
يحدد الفئات (المعروفة أيضًا باسم التصنيفات) لفلترة نتائج الخلاصة. على سبيل المثال، تعرض http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie الإدخالات ذات التصنيفين Fritz وLaurie.
الحد الأقصى للنتائج
الحد الأقصى لعدد الإدخالات التي يمكن عرضها.
تم النشر، الحد الأدنى، النشر-الحد الأقصى
الحد الأقصى للتواريخ المسموح بها لنشر المشاركات
فهرس البدء
الفهرس المستند إلى نتيجة واحدة للنتيجة الأولى التي سيتم استردادها (للنقل).

للحصول على مزيد من المعلومات عن معلَمات طلب البحث، يُرجى الاطّلاع على الدليل المرجعي لواجهة برمجة تطبيقات البيانات في Blogger والدليل المرجعي لواجهات برمجة التطبيقات للبيانات في Google.

جارٍ تعديل المشاركات

لتعديل مشاركة مدونة حالية، يجب أولاً استرداد الإدخال الذي تريد تعديله، ثم تعديله بعد ذلك، ثم إرساله إلى Blogger باستخدام طريقة 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 لتعديل المشاركة إلى الطريقة delete على الكائن $gdClient، على النحو التالي:

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

التعليقات

تتيح واجهة برمجة التطبيقات Blogger Data 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 لتعديل التعليق إلى طريقة delete على العنصر $gdClient على النحو التالي:

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

الرجوع إلى أعلى الصفحة