دليل المطوّر: PHP

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

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

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

المحتويات

الجمهور

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

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

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

الخطوات الأولى

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

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

إنشاء حساب على Blogger

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

تشغيل نموذج التعليمة البرمجية

يتوفّر نموذج عميل كامل جاهز يحتوي على جميع الرموز النموذجية الموضّحة في هذا المستند في مستودع Zend عمل 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');

استخدام أدوات الالتقاط والتثبيت السحرية

في مكتبة برامج PHP، تمت إضافة دعم إلى العاملين السحريين أو المتخصصين في تسهيل استخدام المطوّرين. وهي تسمح بالوصول إلى خصائص الفئة بأمان باستخدام طرق setter/getter التقليدية أو من خلال الوصول إلى الخصائص. على سبيل المثال، إذا كان $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 (Zend_Gdata):

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

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

لمزيد من المعلومات حول المصادقة باستخدام Google Data APIs بشكل عام، يمكنك الاطّلاع على مستندات المصادقة.

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

مصادقة OAuth

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

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

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

عندما يزور أحد المستخدمين تطبيقك لأول مرة، لن تتم مصادقته بعد. وفي هذه الحالة، تحتاج إلى عرض بعض المعلومات ورابط يوجّه المستخدم إلى صفحة 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'].

تمثّل قيمة الرمز المميّز هذه رمزًا مميّزًا لـ AuthSub يُستخدم لمرة واحدة. في هذا المثال، بعد تحديد $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 إذا كان العميل عبارة عن برنامج "مثبّت" مستقلّ لمستخدم واحد (مثل تطبيق متوافق مع أجهزة الكمبيوتر المكتبي).

يستخدم الرمز البرمجي التالي الطريقة 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 Data API خلاصة تعرض المدونات لمستخدم معين، وتُعرف هذه الخلاصة باسم "خلاصة وصفية".

يستخدم الرمز النموذجي التالي كائن $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 Data 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، ثم تعديل المشاركة. سنتناول استرداد المشاركات وتحديثها في القسمين التاليين.

جارٍ استرداد المشاركات

توضح الأقسام التالية كيفية استرداد قائمة بمشاركات المدونات، باستخدام معلمات طلب البحث وبدونها.

يمكنك طلب البحث في خلاصة علنية في 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 Data API طلب مجموعة من الإدخالات التي تتطابق مع معايير محدّدة، مثل طلب نشر مشاركات المدونات أو تعديلها في نطاق زمني معيَّن. للقيام بذلك، يمكنك إنشاء كائن استعلام وتمريره إلى الطريقة 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.
max-results
الحد الأقصى لعدد الإدخالات المطلوب عرضها.
منشور - دقيقة - الحد الأقصى المنشور
حدود تواريخ نشر المشاركات:
start-index
الفهرس المستند إلى 1 لأول نتيجة يتم استردادها (لتقسيم الصفحة إلى صفحات).

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

إنشاء التعليقات

لنشر تعليق، أنشئ كائن إدخال وأدرجه على النحو التالي:

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

الرجوع إلى الأعلى