Hướng dẫn dành cho nhà phát triển: PHP

API Dữ liệu Blogger cho phép các ứng dụng khách xem và cập nhật nội dung trên Blogger dưới dạng nguồn cấp dữ liệu API Dữ liệu của Google.

Ứng dụng khách của bạn có thể sử dụng API Dữ liệu Blogger để tạo bài đăng mới trên blog, chỉnh sửa hoặc xoá bài đăng hiện có trên blog và truy vấn các bài đăng trên blog phù hợp với tiêu chí cụ thể.

Ngoài việc cung cấp một số thông tin cơ bản về khả năng của API dữ liệu Blogger, tài liệu này còn cung cấp ví dụ về các hoạt động tương tác cơ bản với API dữ liệu bằng cách sử dụng thư viện ứng dụng API Google Data API. Nếu bạn muốn hiểu thêm về giao thức cơ bản mà thư viện sử dụng, hãy xem phần Giao thức trong hướng dẫn dành cho nhà phát triển này.

Nội dung

Đối tượng

Tài liệu này dành cho các lập trình viên muốn viết các ứng dụng máy khách PHP có thể tương tác với Blogger.

Tài liệu này giả định rằng bạn hiểu được các ý tưởng chung đằng sau giao thức API dữ liệu của Google.

Để biết thông tin tham khảo về các lớp và phương thức do thư viện ứng dụng cung cấp, hãy xem tài liệu tham khảo API thư viện ứng dụng PHP. Để biết thông tin chung về tệp đối chiếu bằng API Dữ liệu, hãy xem Hướng dẫn tham khảo về giao thức.

Bắt đầu

Để được trợ giúp thiết lập thư viện ứng dụng, hãy xem Hướng dẫn bắt đầu sử dụng.

Thư viện ứng dụng Zend yêu cầu phiên bản PHP 5.1.4 trở lên. Tệp này được cung cấp dưới dạng một phần của Khung tài nguyên (Zend Framework) và cũng như được tải xuống riêng biệt. Để tương tác với Blogger, hãy sử dụng phiên bản 1.0.0 trở lên của thư viện ứng dụng.

Tạo tài khoản Blogger

Bạn nên đăng ký tài khoản Blogger để tham gia thử nghiệm. Blogger sử dụng Tài khoản Google, do đó, nếu bạn đã có Tài khoản Google, thì bạn đã sẵn sàng.

Chạy mã mẫu

Một ứng dụng mẫu đang hoạt động đầy đủ, chứa tất cả mã mẫu hiển thị trong tài liệu này, có sẵn trong kho lưu trữ SVN Framework ZVN. Mẫu nằm tại /framework/standard/body/demos/Zend/Gdata/Blogger.php. Mẫu này chứa tất cả hàm được giải thích trong tài liệu này. Bạn chỉ có thể chạy lệnh này từ dòng lệnh:

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

Trước khi chạy mẫu này hoặc phát triển mã của riêng bạn bằng cách sử dụng Khung Zend, bạn có thể cần đặt include_path và tải các lớp thích hợp. Bạn có thể đặt đường dẫn bao gồm bằng cách sử dụng chế độ cài đặt php.ini hoặc sử dụng phương thức set_include_path. Mã này yêu cầu quyền truy cập vào lớp Zend_Gdata cốt lõi, lớp Zend_Gdata_Query và lớp xác thực 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');

Sử dụng các phương thức getter và setter kỳ diệu

Trong toàn bộ thư viện ứng dụng PHP, chúng tôi đã thêm tính năng hỗ trợ cho các phương thức setter/get phép thuật để thuận tiện cho nhà phát triển. Những thuộc tính này cho phép truy cập vào các thuộc tính của một lớp một cách an toàn bằng các phương thức setter/getter truyền thống hoặc truy cập vào các thuộc tính đó. Ví dụ: nếu $gdataObject là bản sao của một đối tượng trong thư viện này, thì hai dòng mã sau đây có ảnh hưởng giống hệt nhau:

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

Tương tự, hai dòng mã này cũng có tác dụng giống hệt nhau:

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

Tương tự, các phương thức ban đầu giúp bạn khai báo các đối tượng mới dễ dàng hơn. Thay vì ghi nhớ các tên lớp dài theo quy ước đặt tên Zend, bạn có thể tạo một object mới bằng cách gọi newObject(); trên một ứng dụng dịch vụ Zend. Ví dụ: hai đoạn mã sau đây đều khai báo một đối tượng tiện ích draft mới. Bạn sẽ thấy nhiều nội dung hơn trên drafts trong phần tạo bài đăng.

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

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

Các phương thức setter/getter và nhà máy kỳ diệu là không bắt buộc, vì vậy, hãy sử dụng phương pháp phù hợp nhất với bạn.

Tài nguyên khác

Các tài nguyên khác cho thành phần API dữ liệu Google của Zend Framework (Zend_Gdata):

Xác thực với dịch vụ Blogger

Bạn có thể truy cập vào cả nguồn cấp dữ liệu công khai và riêng tư bằng cách sử dụng Blogger Data API. Nguồn cấp dữ liệu công khai không yêu cầu xác thực nhưng chỉ có thể đọc. Nếu muốn sửa đổi blog, khách hàng của bạn cần xác thực trước khi yêu cầu nguồn cấp dữ liệu riêng tư. Tính năng này có thể xác thực bằng 1 trong 3 cách sau: Xác thực OAuth, xác thực proxy AuthSub hoặc xác thực tên người dùng/mật khẩu ClientLogin.

Để biết thêm thông tin về việc xác thực bằng API dữ liệu của Google nói chung, hãy xem tài liệu xác thực.

Hầu hết mẫu trong các phần tiếp theo của tài liệu này giả định rằng bạn có một đối tượng ứng dụng được xác thực có tên là $gdClient.

Xác thực OAuth

Để xem tài liệu về việc xác thực OAuth bằng thư viện Zend PHP GData, vui lòng xem bài viết về OAuth trong Thư viện ứng dụng giao thức dữ liệu của Google.

Xác thực proxy AuthSub

Xác thực proxy AuthSub được sử dụng trong các ứng dụng web cần xác thực người dùng với Tài khoản Google. Toán tử trang web và mã ứng dụng khách không có quyền truy cập vào tên người dùng và mật khẩu cho người dùng Blogger; thay vào đó, ứng dụng lấy các mã thông báo AuthSub đặc biệt cho phép ứng dụng hành động thay mặt cho một người dùng cụ thể. Để biết thêm thông tin chi tiết, hãy xem tài liệu về AuthSub.

Khi người dùng truy cập vào ứng dụng của bạn lần đầu tiên, họ chưa được xác thực. Trong trường hợp này, bạn cần hiển thị một số thông tin và một đường liên kết đưa người dùng đến trang Google để xác thực yêu cầu truy cập vào blog của họ. Thư viện ứng dụng Zend cung cấp chức năng tạo URL của trang Google. Mã dưới đây truy xuất URL của trang 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>';

Phương thức getAuthSubTokenUri lấy các thông số sau (tương ứng với các thông số truy vấn mà trình xử lý AuthSubRequest sử dụng):

tiếp theo
URL của trang mà Google sẽ chuyển hướng người dùng đến sau khi xác thực.
xác định phạm vi của thứ nguyên.
Cho biết ứng dụng đang yêu cầu mã thông báo để truy cập vào nguồn cấp dữ liệu Blogger. Chuỗi phạm vi sẽ sử dụng là http://www.blogger.com/feeds/ (tất nhiên là mã hoá URL).
bảo mật
Cho biết ứng dụng có yêu cầu mã thông báo bảo mật hay không.
phiên hoạt động
Cho biết liệu mã thông báo được trả về có thể đổi được mã thông báo đa dụng (phiên hoạt động) hay không.

Ví dụ ở trên cho thấy một lệnh gọi không yêu cầu mã thông báo bảo mật (giá trị của securefalse). URL yêu cầu thu được có thể có dạng như sau:

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

Người dùng đi theo đường liên kết đến trang web của Google và xác thực với Tài khoản Google của họ.

Sau khi người dùng xác thực, hệ thống AuthSub chuyển hướng họ đến URL mà bạn đã chỉ định trong tham số truy vấn next của URL AuthSubRequest. Hệ thống AuthSub sẽ thêm một mã thông báo xác thực vào URL đó, làm giá trị của tham số truy vấn token. Ví dụ:

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

Bạn có thể truy xuất giá trị mã thông báo bằng $_GET['token'].

Giá trị mã thông báo này là mã thông báo AuthSub dùng một lần. Trong ví dụ này, vì $session = true được chỉ định, mã thông báo này có thể được trao đổi với mã thông báo phiên AuthSub bằng phương thức Zend_Gdata_AuthSub::getAuthSubSessionToken. Lệnh này sẽ gọi dịch vụ AuthSubSessionToken:

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

Trước tiên, đoạn mã kiểm tra xem mã thông báo phiên AuthSub đã được hiển thị hay chưa. Nếu không phải là mã thông báo dùng một lần được chỉ định trong URL, thì đoạn mã sẽ chuyển mã thông báo dùng một lần cho phương thức getAuthSubSessionToken, và giao diện AuthSub sẽ trả về một mã thông báo phiên. Sau đó, mã này sẽ đặt giá trị của mã thông báo phiên trong biến $_SESSION['sessionToken'].

Sau đó, ứng dụng của bạn có thể sử dụng giá trị mã thông báo trong các lần tương tác tiếp theo với Blogger. Bạn có thể sử dụng phương thức Zend_Gdata_AuthSub::getHttpClient để lấy đối tượng Zend_Http_Client có giá trị đặt trước tiêu đề Authorization bao gồm thông tin xác thực AuthSub:

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

Xác thực tên người dùng/mật khẩu ClientLogin

Sử dụng chế độ xác thực ClientLogin nếu ứng dụng của bạn là ứng dụng khách độc lập, người dùng đơn lẻ và được cài đặt" (chẳng hạn như ứng dụng dành cho máy tính).

Mã sau đây sử dụng phương thức Zend_Gdata_ClientLogin::getHttpClient để thực hiện yêu cầu tới dịch vụ ClientLogin, truy xuất mã thông báo xác thực và tạo đối tượng Zend_Http_Client với tiêu đề xác thực phù hợp. Sau đó, HttpClient được phương thức này trả về sẽ được dùng để tạo đối tượng dịch vụ Zend_Gdata.

Lưu ý rằng $accountType được đặt thành GOOGLE một cách rõ ràng. Nếu bạn không đặt thông số này, người dùng G Suite sẽ không thể sử dụng thành công API 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);

Để biết thêm thông tin về xác thực ClientLogin, bao gồm cả các yêu cầu và phản hồi mẫu, hãy xem tài liệu Xác thực ứng dụng đã cài đặt.

Lưu ý: Sử dụng cùng một mã thông báo cho tất cả các yêu cầu trong một phiên nhất định; không thu thập mã thông báo mới cho từng yêu cầu trên Blogger.

Lưu ý: Như đã mô tả trong tài liệu ClientLogin, yêu cầu xác thực có thể không thành công và yêu cầu xác thực CAPTCHA. Nếu bạn muốn Google đưa ra và xử lý hình ảnh xác thực CAPTCHA, hãy chuyển người dùng đến https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (thay vì đến URL xử lý hình ảnh xác thực (CAPTCHA) đã cung cấp trong tài liệu ClientLogin.

Truy xuất danh sách blog

API Dữ liệu của Blogger cung cấp nguồn cấp dữ liệu liệt kê các blog cho một người dùng cụ thể; nguồn cấp dữ liệu đó được gọi là "metafeed;"

Mã mẫu sau đây sử dụng đối tượng $gdClient đã xác thực để truy xuất siêu dữ liệu, sau đó in tiêu đề của từng blog.

Lớp Zend_Gdata_Query đảm nhiệm việc tạo URL truy vấn. Trong trường hợp này, bạn không cần làm gì thêm, nhưng lợi ích của lớp Query sẽ trở nên chính xác trong phần truy xuất bài đăng theo tham số truy vấn của tài liệu này.

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

Hãy lưu ý URL được phương thức getFeed sử dụng. Đây là URL metafeed mặc định; URL này trả về danh sách các blog cho người dùng hiện đang được xác thực. Để truy cập vào nguồn cấp dữ liệu cho một người dùng khác, bạn có thể đặt mã nhận dạng của người dùng đó vào vị trí default trong URL nguồn cấp dữ liệu. Mã nhận dạng của người dùng là chuỗi chữ số ở cuối URL hồ sơ của người dùng.

Đoạn mã dưới đây minh hoạ cách trích xuất mã blog từ nguồn cấp dữ liệu. Bạn sẽ cần mã blog để thực hiện các thao tác tạo, cập nhật và xoá đối với bài đăng và bình luận. Biến $index thể hiện blog nào trong nguồn cấp dữ liệu blog của người dùng đang được sử dụng. Trường id có dạng tag:blogger.com,1999:user-userID.blog-blogID, vì vậy split trên ký tự #39;-&39; đặt mã blog trong phần tử cuối cùng của mảng thu được.

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

Tạo bài đăng

API Dữ liệu của Blogger cho phép bạn tạo và xuất bản các mục nhập mới trên blog, cũng như việc tạo các mục nhập bản nháp.

Lưu ý: Tính năng đặt tác giả tùy chỉnh cho bài đăng hiện không được hỗ trợ. Tất cả bài đăng mới sẽ xuất hiện như thể chúng được tạo bởi người dùng hiện đã xác thực.

Đăng bài trên blog

Bạn có thể sử dụng thư viện ứng dụng PHP để xuất bản các mục nhập blog mới.

Trước tiên, hãy tạo một mục nhập đại diện cho bài đăng trên blog. Sau đó, bạn có thể đặt tiêu đề, nội dung và các thuộc tính khác của bài đăng trên blog. Cuối cùng, hãy gọi phương thức insertEntry để chèn bài đăng. Bạn có thể xem các bản sao ban đầu của nhà máy tại đây với các đối tượng Zend_Gdata_Entry, Zend_Gdata_App_Extension_TitleZend_Gdata_App_Extension_Content mới.

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

Tạo bài đăng nháp trên blog

Bài đăng nháp được tạo giống như bài đăng công khai, nhưng bạn cần đặt thuộc tính nháp của đối tượng mục nhập. Bạn có thể tạo một bài đăng trên blog giống như bài đăng ở trên dưới dạng bản nháp bằng cách thêm các dòng được đánh dấu:

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

Tương tự như việc đặt tiêu đề hoặc nội dung của một bài đăng, bạn tạo các đối tượng Zend_Gdata_App_Extension_ControlZend_Gdata_App_Extension_Draft mới và gán các đối tượng đó cho thuộc tính kiểm soát của mục nhập.

Bạn có thể chuyển bài đăng nháp hiện có trên blog thành một bài đăng đã xuất bản bằng cách truy xuất bài đăng nháp, đặt thuộc tính nháp cho no rồi cập nhật bài đăng. Chúng tôi sẽ đề cập đến việc truy xuất và cập nhật bài đăng trong hai phần tiếp theo.

Đang truy xuất bài đăng

Các phần sau đây mô tả cách truy xuất danh sách các bài đăng trên blog, có và không có tham số truy vấn.

Bạn có thể truy vấn nguồn cấp dữ liệu công khai trên Blogger mà không cần xác thực. Do đó, bạn không cần đặt thông tin đăng nhập hoặc xác thực AuthSub trước khi truy xuất các bài đăng trên blog công khai.

Truy xuất tất cả bài đăng trên blog

Để truy xuất bài đăng của người dùng, hãy gọi cùng một phương thức getFeed dùng để truy xuất nguồn cấp dữ liệu blog của blog, nhưng lần này hãy gửi URL của nguồn cấp dữ liệu bài đăng trên blog:

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

Truy xuất bài đăng bằng cách sử dụng tham số truy vấn

API Dữ liệu của Blogger cho phép bạn yêu cầu một tập hợp các mục nhập phù hợp với các tiêu chí đã chỉ định, chẳng hạn như yêu cầu các bài đăng trên blog đã được phát hành hoặc cập nhật trong một phạm vi ngày cụ thể. Để thực hiện việc này, bạn hãy tạo một đối tượng truy vấn và chuyển đối tượng đó đến phương thức getFeed.

Ví dụ: để gửi một truy vấn phạm vi ngày, hãy đặt các tham số published-minpublished-max của đối tượng truy vấn. Đoạn mã sau đây in tiêu đề và nội dung của từng bài đăng trên blog được xuất bản giữa thời gian bắt đầu và thời gian kết thúc nhất định:

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

Phương thức gỡ lỗi hữu ích cho lớp Zend_Gdata_QuerygetQueryUrl(). Phương thức này sẽ hiển thị cho bạn URL đã mã hoá được tạo.

Lưu ý: Hiện không có phương thức setter ảo nào cho tham số truy vấn published-minpublished-max. Tuy nhiên, bạn có thể sử dụng setStartIndexsetMaxResults.

API Dữ liệu của Blogger hỗ trợ các thông số truy vấn sau:

categories
Chỉ định danh mục (còn gọi là nhãn) để lọc kết quả trong nguồn cấp dữ liệu. Ví dụ: http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie trả về các mục có cả nhãn FritzLaurie.
kết quả tối đa
Số mục nhập tối đa cần trả về.
đã phát hành tối thiểu, đã xuất bản tối đa
Giới hạn ngày xuất bản.
chỉ mục bắt đầu
Chỉ mục dựa trên 1 của kết quả đầu tiên được truy xuất (để phân trang).

Để biết thêm thông tin về các tham số truy vấn, hãy xem Hướng dẫn tham khảo API dữ liệu của BloggerHướng dẫn tham khảo API dữ liệu của Google.

Đang cập nhật bài đăng

Để cập nhật một bài đăng hiện có trên blog, trước tiên, bạn truy xuất mục mà bạn muốn cập nhật, sau đó sửa đổi bài đăng đó rồi gửi đến Blogger bằng phương thức save. Đoạn mã sau đây sẽ sửa đổi tiêu đề và nội dung của một mục nhập blog, giả sử bạn đã truy xuất mục đó từ máy chủ.

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

Lưu ý: Tính năng sửa đổi dữ liệu tác giả liên kết với các bài đăng hiện không được hỗ trợ.

Đang xóa bài đăng

Để xoá bài đăng, hãy truyền URL chỉnh sửa của bài đăng đến phương thức delete trên đối tượng $gdClient, có dạng như sau:

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

Bình luận

API Dữ liệu của Blogger cho phép tạo, truy xuất và xóa bình luận. Tính năng cập nhật nhận xét không được hỗ trợ (cũng không có trong giao diện web).

Tạo nhận xét

Để đăng nhận xét, hãy tạo một đối tượng mục nhập và chèn đối tượng đó như sau:

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

Lưu ý: Hiện tại, bạn chỉ có thể đăng bình luận lên blog mà người dùng đã xác thực sở hữu.

Lưu ý: Chúng tôi hiện không hỗ trợ việc cài đặt tác giả tùy chỉnh cho nhận xét. Tất cả nhận xét mới sẽ xuất hiện như thể chúng được tạo bởi người dùng hiện đã xác thực.

Truy xuất nhận xét

Bạn có thể truy xuất các nhận xét đối với một bài đăng cụ thể từ URL của nguồn cấp dữ liệu về nhận xét của bài đăng đó:

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

Hoặc bạn có thể nhận bình luận từ tất cả bài đăng bằng cách sử dụng URL nguồn cấp dữ liệu bình luận trên blog:

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

Đang xoá nhận xét

Để xoá một nhận xét, hãy chuyển URL chỉnh sửa của nhận xét đó vào phương thức delete trên đối tượng $gdClient như sau:

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

Quay lại đầu trang