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

Blogger Data API 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 Blogger Data API để tạo các bài đăng mới trên blog, chỉnh sửa hoặc xoá các bài đăng trên blog hiện có và truy vấn các bài đăng trên blog phù hợp với các tiêu chí cụ thể.

Ngoài việc cung cấp một số thông tin cơ bản về các chức năng của Blogger Data API, 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 Data API khi sử dụng thư viện ứng dụng Zend Google Data API. Nếu bạn muốn tìm hiểu thêm về giao thức cơ sở 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 người xem

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 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 rõ 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 của thư viện ứng dụng PHP. Để biết thông tin tham khảo chung về Blogger Data API, hãy xem Hướng dẫn tham khảo về giao thức.

Bắt đầu

Để được trợ giúp về cách 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 PHP 5.1.4 trở lên. Ứng dụng này được cung cấp dưới dạng một phần của Zend Framework (Khung chương trình Zend) và cũng có dạng bản tải xuống riêng biệt. Để tương tác với Blogger, hãy sử dụng thư viện ứng dụng phiên bản 1.0.0 trở lên.

Tạo tài khoản Blogger

Bạn nên đăng ký một tài khoản Blogger cho mục đích thử nghiệm. Blogger sử dụng Tài khoản Google, vì vậy, nếu đã có Tài khoản Google thì bạn đã hoàn tất.

Chạy mã mẫu

Một ứng dụng mẫu hoạt động đầy đủ chứa tất cả mã mẫu như trong tài liệu này có sẵn trong kho lưu trữ Zend Framework SVN. Mẫu này nằm tại /framework/standard/trunk/demos/Zend/Gdata/Blogger.php. Mẫu chứa tất cả hàm được giải thích trong tài liệu này. Công cụ này chỉ có thể chạ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 Khung Zend, có thể bạn 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 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 chính, 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 phương thức getter và phương thức setter thần kỳ

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

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

Tương tự, hai dòng mã sau 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 nhà máy thần kỳ giúp việc khai báo đối tượng mới dễ dàng hơn. Thay vì ghi nhớ tên lớp dài theo quy ước đặt tên Zend, bạn có thể tạo object mới bằng cách gọi newObject(); trên ứng dụng dịch vụ Zend. Ví dụ: cả hai đoạn mã sau đều khai báo một đối tượng tiện ích draft mới. Bạn có thể xem thêm thông tin về 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();

Không bắt buộc phải sử dụng phương pháp setter/getter và nhà máy kỳ diệu, vì vậy, hãy sử dụng bất cứ phương pháp nào 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 Google Data APIs của Zend Framework (Zend_Gdata):

Xác thực đến dịch vụ Blogger

Bạn có thể truy cập cả nguồn cấp dữ liệu công khai và riêng tư bằng API Dữ liệu của Blogger. Nguồn cấp dữ liệu công khai không yêu cầu xác thực nào nhưng sẽ ở chế độ chỉ đọc. Nếu bạn muốn sửa đổi blog, thì ứng dụ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ư. Ứng dụng này có thể xác thực bằng một trong 3 phương pháp 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ề cách xác thực bằng Google Data API nói chung, hãy xem tài liệu xác thực.

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

Xác thực OAuth

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

Xác thực proxy AuthSub

Phương thức xác thực proxy AuthSub được các ứng dụng web cần xác thực người dùng bằng Tài khoản Google. Toán tử trang web và mã ứng dụng không có quyền truy cập vào tên người dùng và mật khẩu của người dùng Blogger; thay vào đó, ứng dụng sẽ nhận được mã thông báo AuthSub đặc biệt cho phép ứng dụng hành động thay mặt 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 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 chuyển hướng người dùng đến một trang của 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 một hàm để tạo URL của trang Google. Mã bên dưới 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 sẽ nhận các tham số sau (tương ứng với tham số truy vấn mà trình xử lý AuthSubRequest sử dụng):

tiếp theo
URL của trang mà Google nên 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 nguồn cấp dữ liệu của Blogger. Chuỗi phạm vi cần sử dụng là http://www.blogger.com/feeds/ (dĩ nhiên là được 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 có thể đổi mã thông báo được trả về lấy mã thông báo đa mục đích (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 truy cập đường liên kết đến trang web của Google và xác thực là Tài khoản Google của họ.

Sau khi người dùng xác thực, hệ thống AuthSub sẽ 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 đó, dưới dạng 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 đại diện cho mã thông báo AuthSub dùng một lần. Trong ví dụ này, vì $session = true được chỉ định, nên bạn có thể đổi mã thông báo này lấy mã thông báo phiên AuthSub bằng cách sử dụng phương thức Zend_Gdata_AuthSub::getAuthSubSessionToken. Phương thức 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ã này sẽ kiểm tra xem mã thông báo phiên AuthSub đã có hay chưa. Nếu không, nhưng 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 đến phương thức getAuthSubSessionToken và giao diện AuthSub sẽ trả về mã thông báo phiên. Sau đó, mã này sẽ đặt giá trị mã thông báo phiên vào biến phiên $_SESSION['sessionToken'].

Sau đó, ứng dụng của bạn có thể sử dụng giá trị mã thông báo phiên trong các 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 cho 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 phương thức xác thực ClientLogin nếu ứng dụng của bạn là một ứng dụng "được cài đặt" độc lập, dành cho một người dùng (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 đến 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 thích hợp. Sau đó, HttpClient mà phương thức này trả về sẽ được dùng để tạo đối tượng dịch vụ Zend_Gdata.

Xin lưu ý rằng $accountType được đặt rõ ràng thành GOOGLE. Nếu bạn không đặt tham 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ề việc 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 về Xác thực cho ứng dụng đã cài đặt.

Lưu ý: Sử dụng cùng một mã thông báo cho tất cả yêu cầu trong một phiên cụ thể; không lấy mã thông báo mới cho mỗi 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 thử thách CAPTCHA. Nếu bạn muốn Google đưa ra và xử lý thử thách CAPTCHA, hãy chuyển người dùng đến https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (thay vì đến URL xử lý CAPTCHA trong tài liệu ClientLogin).

Truy xuất danh sách blog

Blogger Data API cung cấp một nguồn cấp dữ liệu liệt kê các blog của 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 nguồn cấp dữ liệu meta, sau đó in tiêu đề của từng blog.

Lớp Zend_Gdata_Query đảm nhận 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 tính hữu ích của lớp Query sẽ được thể hiện rõ 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 ghi lại URL mà phương thức getFeed sử dụng. Đây là URL nguồn cấp dữ liệu meta mặc định; URL này trả về danh sách blog cho người dùng hiện đã xác thực. Để truy cập vào nguồn cấp dữ liệu của một người dùng khác, bạn có thể đặt mã nhận dạng của người dùng đó thay cho default trong URL metafeed. Mã nhận dạng 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ã nhận dạng blog từ nguồn cấp dữ liệu. Bạn sẽ cần có 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 đang được sử dụng trong nguồn cấp dữ liệu blog của người dùng. Trường id có dạng tag:blogger.com,1999:user-userID.blog-blogID, vì vậy, split trên ký tự '-' sẽ đặt mã blog vào 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

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

Lưu ý: Chúng tôi hiện không hỗ trợ việc đặt tác giả tuỳ chỉnh cho bài đăng. Tất cả cá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 đã được xác thực.

Xuất bản bài đăng 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 blog mới.

Trước tiên, hãy tạo một thực thể mục nhập để thể hiện 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 của nhà máy ma thuật đang hoạt động 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;
}

Đang tạo một bài đăng nháp trên blog

Bài đăng nháp được tạo theo cách tương tự 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 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 sẽ tạo các đối tượng Zend_Gdata_App_Extension_ControlZend_Gdata_App_Extension_Draft mới rồi chỉ định các đối tượng này cho thuộc tính điều khiển của mục nhập.

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

Truy xuất bài đăng

Các phần sau 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 của 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 bài đăng từ một 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 meta của blog, nhưng lần này hãy gửi URL 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 tham số truy vấn

Blogger Data API cho phép bạn yêu cầu một tập hợp các mục khớ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 xuất bản hoặc cập nhật trong một phạm vi ngày nhất định. Để thực hiện việc này, bạn cần tạo một đối tượng truy vấn và truyền đối tượng đó vào phương thức getFeed.

Ví dụ: để gửi một truy vấn theo phạm vi ngày, hãy đặt 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 trong khoảng thời gian bắt đầu và 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);
}

Một 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 thần kỳ nào cho các tham số truy vấn published-minpublished-max. Tuy nhiên, bạn có thể sử dụng setStartIndexsetMaxResults.

Blogger Data API hỗ trợ các tham số truy vấn sau đây:

categories
Chỉ định danh mục (còn gọi là nhãn) để lọc kết quả 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 nhập có cả nhãn FritzLaurie.
max-results
Số mục nhập tối đa cần trả về.
phút xuất bản, tối đa được xuất bản
Giới hạn về ngày xuất bản bài dự thi.
start-index
Chỉ mục dựa trên 1 của kết quả đầu tiên cần truy xuất (để phân trang).

Để biết thêm thông tin về 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 về 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 cần truy xuất mục bạn muốn cập nhật, sau đó sửa đổi mục đó rồi gửi đến Blogger bằng phương thức save. Đoạn mã sau đây sửa đổi tiêu đề và nội dung của mục nhập blog, giả định rằng bạn đã truy xuất mục nhập 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 ý: Hiện chúng tôi không hỗ trợ tính năng sửa đổi dữ liệu tác giả liên kết với bài đăng.

Xoá bài đăng

Để xoá một bài đăng, hãy chuyển URL chỉnh sửa của bài đăng đó vào phương thức delete trên đối tượng $gdClient của bạn, 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

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

Đang 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 nhận xét lên blog do 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 đặt tác giả tuỳ chỉnh cho nhận xét. Tất cả các nhận xét mới sẽ xuất hiện như thể chúng do người dùng hiện đã xác thực tạo ra.

Truy xuất bình luận

Bạn có thể truy xuất bình luận cho một bài đăng cụ thể từ URL nguồn cấp dữ liệu bình luận 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 của blog:

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

Đang xoá bình luận

Để xoá một nhận xét, hãy truyền URL chỉnh sửa của nhận xét đó đến 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);
}

Trở lại đầu trang