Panduan Developer: .NET

Blogger Data API memungkinkan aplikasi klien melihat dan memperbarui konten Blogger dalam bentuk feed Google Data API.

Aplikasi klien Anda dapat menggunakan Blogger Data API untuk membuat postingan blog baru, mengedit atau menghapus postingan blog yang sudah ada, dan membuat kueri untuk postingan blog yang sesuai dengan kriteria tertentu.

Selain menyediakan beberapa latar belakang tentang kemampuan Blogger Data API, dokumen ini memberikan contoh interaksi Data API dasar menggunakan library klien.NET. Jika Anda tertarik untuk memahami lebih lanjut protokol dasar yang digunakan library, lihat bagian Protokol dalam panduan developer ini.

Daftar Isi

Audiens

Dokumen ini ditujukan untuk programmer yang ingin menulis aplikasi klien .NET yang dapat berinteraksi dengan Blogger.

Dokumen ini mengasumsikan bahwa Anda memahami ide-ide umum di balik protokol Google Data API.

Untuk mengetahui informasi referensi tentang class dan metode yang disediakan oleh library klien, lihat referensi API library klien.NET. Untuk informasi referensi umum Blogger Data API, lihat Panduan referensi protokol.

Memulai

Untuk mendapatkan bantuan dalam menyiapkan library klien, lihat Panduan Memulai.

Untuk menggunakan library klien .NET, Anda memerlukan runtime .NET 1.1, dan saat ini Anda juga harus menggunakan semua patch. Setelah mendownload library klien, Anda akan menemukan DLL yang diperlukan untuk memulai di direktori lib/Release distribusi.

Membuat akun Blogger

Anda dapat mendaftar ke akun Blogger untuk tujuan pengujian. Blogger menggunakan Akun Google, jadi jika Anda sudah memiliki Akun Google, berarti Anda sudah siap.

Menjalankan kode contoh

Klien sampel yang berfungsi penuh, berisi semua kode contoh yang ditampilkan dalam dokumen ini, tersedia di project library klien .NET. Sampel terletak di /trunk/clients/cs/samples/blogger/ConsoleSample.cs di tab Sumber repositori SVN.

Sebelum mengompilasi dan menjalankan contoh ini, perbarui nilai username, password, blogName, dan postId dengan nilai yang sesuai. Nilai username dan password mewakili kredensial yang digunakan untuk login ke Blogger. Nilai blogName adalah awal URL blogspot blog Anda.

Klien contoh melakukan beberapa operasi di blog yang disediakan untuk menunjukkan penggunaan Blogger Data API.

Untuk mengompilasi contoh dalam dokumen ini ke dalam kode Anda sendiri, Anda memerlukan pernyataan using berikut:

using Google.GData.Client;
using System.Net;
using System.Xml;
using System.Text.RegularExpressions;

Mengautentikasi ke layanan Blogger

Anda dapat mengakses feed publik dan pribadi menggunakan Blogger Data API. Feed publik tidak memerlukan autentikasi apa pun, tetapi bersifat hanya baca. Jika Anda ingin mengubah blog, klien Anda perlu melakukan autentikasi sebelum meminta feed pribadi. Autentikasi dapat dilakukan menggunakan salah satu dari dua pendekatan berikut: autentikasi proxy AuthSub atau autentikasi nama pengguna/sandi ClientLogin.

Untuk informasi selengkapnya tentang autentikasi dengan Google Data API secara umum, lihat dokumentasi autentikasi.

Autentikasi proxy AuthSub

Autentikasi proxy AuthSub digunakan oleh aplikasi web yang perlu mengautentikasi pengguna ke Akun Google. Operator situs dan kode klien tidak memiliki akses ke nama pengguna dan sandi untuk pengguna Blogger; sebagai gantinya, klien mendapatkan token AuthSub khusus yang memungkinkan klien untuk bertindak atas nama pengguna tertentu. Untuk mengetahui informasi yang lebih detail, lihat dokumentasi AuthSub.

Saat pertama kali mengunjungi aplikasi Anda, pengguna belum diautentikasi. Dalam hal ini, Anda perlu menampilkan beberapa informasi dan link yang mengarahkan pengguna ke halaman Google untuk mengautentikasi permintaan Anda agar dapat mengakses blog mereka.

Misalkan hyperlink ASP berikut didefinisikan di halaman Anda:

<asp:HyperLink ID="GotoAuthSubLink" runat="server"/>

Kemudian, untuk membuat URL AuthSubRequest untuk aplikasi Anda, buat panggilan library klien .NET seperti berikut:

GotoAuthSubLink.Text = "Login to your Google Account";
GotoAuthSubLink.NavigateUrl =
  AuthSubUtil.getRequestUrl("http://www.example.com/RetrieveToken",
  "http://www.blogger.com/feeds/",
  false,
  true);

Metode getRequestUrl menggunakan parameter berikut (sesuai dengan parameter kueri yang digunakan oleh pengendali AuthSubRequest):

berikutnya
URL halaman tempat Google akan mengalihkan pengguna setelah autentikasi.
cakupan
Menunjukkan bahwa aplikasi meminta token untuk mengakses feed Blogger. String cakupan yang digunakan adalah http://www.blogger.com/feeds/ (tentu saja dienkode ke URL).
aman
Menunjukkan apakah klien meminta token aman.
sesi
Menunjukkan apakah token yang ditampilkan dapat ditukarkan dengan token multi-penggunaan (sesi).

Contoh di atas menunjukkan panggilan yang tidak meminta token aman (nilai secure adalah false). URL permintaan yang dihasilkan mungkin terlihat seperti ini:

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%2FRetrieveToken

Pengguna mengikuti link ke situs Google dan mengautentikasi ke Akun Google mereka.

Setelah pengguna melakukan autentikasi, sistem AuthSub akan mengalihkan mereka ke URL yang Anda tentukan dalam parameter kueri next dari URL AuthSubRequest. Sistem AuthSub menambahkan token autentikasi ke URL tersebut, sebagai nilai parameter kueri token. Oleh karena itu, token ini dapat diakses sebagai variabel dalam objek Request.QueryString halaman ASP. Pengguna dialihkan ke URL yang terlihat seperti ini:

http://www.example.com/RetrieveToken?token=yourAuthToken

Nilai token ini mewakili token AuthSub satu kali pakai. Dalam contoh ini, karena session = true ditentukan, token ini dapat ditukarkan dengan token sesi AuthSub, seperti berikut:

SessionsessionToken = AuthSubUtil.exchangeForSessionToken(Request.QueryStringtoken, null);

Artinya, Anda akan meneruskan token sekali pakai ke metode exchangeForSessionToken, beserta null (untuk mode tidak terdaftar) atau kunci pribadi (untuk mode terdaftar), dan antarmuka AuthSub menampilkan token sesi. Untuk informasi selengkapnya tentang aplikasi dan kunci pribadi yang terdaftar, lihat bagian "Permintaan penandatanganan" dalam dokumentasi AuthSub.

Aplikasi Anda kemudian dapat menggunakan nilai token sesi di interaksi berikutnya dengan Blogger. Untuk memberi tahu library klien .NET agar otomatis mengirim header Authorization (berisi token sesi) dengan setiap permintaan, lakukan hal berikut:

GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("blogger", "BloggerSampleApp");
authFactory.Token = SessionsessionToken.ToString();
Service service = new Service(authFactory.ApplicationName);
service.RequestFactory = authFactory;

Autentikasi nama pengguna/sandi ClientLogin

Gunakan autentikasi ClientLogin jika klien Anda adalah klien mandiri yang tidak diinstal (seperti aplikasi desktop). Tetapkan kredensial objek layanan Anda sebagai berikut:

Service service = new Service("blogger", "exampleCo-exampleApp-1");
service.Credentials = new GDataCredentials("user@example.com", "secretPassword");
GDataGAuthRequestFactory factory = (GDataGAuthRequestFactory) service.RequestFactory;
factory.AccountType = "GOOGLE";

Dalam cuplikan di atas, kita meneruskan dua parameter ke konstruktor Service. Parameter pertama adalah nama layanan tempat kita ingin berinteraksi. Parameter kedua adalah nama aplikasi dalam bentuk companyName-applicationName-versionID. Kami juga menetapkan Service.RequestFactory untuk hanya menggunakan jenis akun GOOGLE guna memungkinkan autentikasi yang tepat bagi pengguna G Suite.

Untuk informasi selengkapnya tentang autentikasi ClientLogin, termasuk contoh permintaan dan respons, lihat dokumentasi Autentikasi untuk Aplikasi yang Terinstal.

Catatan: Gunakan token yang sama untuk semua permintaan di sesi tertentu; jangan dapatkan token baru untuk setiap permintaan Blogger.

Catatan: Seperti yang dijelaskan dalam dokumentasi ClientLogin, permintaan autentikasi mungkin gagal dan meminta verifikasi CAPTCHA. Jika Anda ingin Google mengeluarkan dan menangani verifikasi CAPTCHA, kirimkan pengguna ke https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger (bukan ke URL penanganan CAPTCHA yang diberikan dalam dokumentasi ClientLogin).

Mengambil daftar blog

Blogger Data API menyediakan feed yang mencantumkan blog untuk pengguna tertentu; feed tersebut dikenal sebagai "metafeed."

Kode contoh berikut menggunakan objek Service yang diautentikasi untuk mengambil metafeed, lalu mencetak setiap judul blog.

query.Uri = new Uri("http://www.blogger.com/feeds/default/blogs");
AtomFeed feed = null;
try
{
  feed = service.Query(query);
  foreach (AtomEntry entry in feed.Entries)
  {
    Console.WriteLine("Blog Title: " + entry.Title.Text);
  }
}

Perhatikan URL yang digunakan oleh metode getFeed. Ini adalah URL metafeed default; yang menampilkan daftar blog untuk pengguna yang saat ini diautentikasi. Untuk mengakses feed bagi pengguna lain, Anda dapat menempatkan ID pengguna sebagai pengganti default di URL feed meta. ID pengguna adalah string angka di akhir URL profil pengguna.

Membuat postingan

Dengan Blogger Data API, Anda dapat membuat dan memublikasikan entri blog baru, serta membuat draf entri.

Semua contoh berikut mengasumsikan bahwa Anda memiliki objek Service yang diautentikasi.

Catatan: Menyetel penulis kustom untuk postingan saat ini tidak didukung. Semua postingan baru akan muncul seolah-olah dibuat oleh pengguna yang saat ini terautentikasi.

Memublikasikan postingan blog

Anda dapat menggunakan library klien .NET untuk memublikasikan entri blog baru.

Pertama, buat objek AtomEntry untuk mewakili postingan blog. Anda kemudian dapat menetapkan judul, konten, dan atribut lain dari postingan blog tersebut. Terakhir, gunakan objek Service untuk menyisipkan postingan. Berikut adalah contoh cara memublikasikan postingan blog baru:

AtomEntry newPost = new AtomEntry();
newPost.Title.Text = "Marriage!";
newPost.Content = new AtomContent();
newPost.Content.Content = "<div xmlns='http://www.w3.org/1999/xhtml'>" +
  "<p>Mr. Darcy has <em>proposed marriage</em> to me!</p>" +
  "<p>He is the last man on earth I would ever desire to marry.</p>" +
  "<p>Whatever shall I do?</p>" +
  "</div>";
newPost.Content.Type = "xhtml";

Uri blogFeedUri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
AtomEntry createdEntry = service.Insert(blogFeedUri, newPost);

Metode Insert akan menggunakan URL postingan layanan sebagai parameter. Kemudian, metode ini menampilkan entri seperti yang disimpan oleh Blogger. Entri yang ditampilkan sama dengan yang Anda kirim, tetapi juga berisi berbagai elemen yang ditambahkan oleh Blogger, seperti ID postingan.

Jika permintaan Anda gagal karena beberapa alasan, Blogger dapat menampilkan kode status yang berbeda. Untuk informasi tentang kode status, lihat Dokumen referensi protokol Google Data API.

Membuat postingan blog draf

Postingan draf dibuat dengan cara yang sama seperti postingan publik, tetapi Anda perlu menetapkan atribut draft objek AtomEntry. Postingan blog di atas dapat dibuat sebagai draf dengan menambahkan baris yang ditandai:

AtomEntry newPost = new AtomEntry();
newPost.Title.Text = "Marriage!";
newPost.Content = new AtomContent();
newPost.Content.Content = "<div xmlns='http://www.w3.org/1999/xhtml'>" +
    "<p>Mr. Darcy has <em>proposed marriage</em> to me!</p>" +
    "<p>He is the last man on earth I would ever desire to marry.</p>" +
    "<p>Whatever shall I do?</p>" +
    "</div>";
newPost.Content.Type = "xhtml";
newPost.IsDraft = true;

Uri blogFeedUri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
AtomEntry createdEntry = service.Insert(blogFeedUri, newPost);

Anda dapat mengubah postingan blog draf yang sudah ada menjadi postingan yang dipublikasikan dengan mengambil draf postingan, menyetel atribut draf ke false, lalu memperbarui postingan tersebut. Kami akan membahas cara mengambil dan memperbarui postingan di dua bagian berikutnya.

Mengambil postingan

Bagian berikut ini menjelaskan cara mengambil daftar postingan blog, dengan dan tanpa parameter kueri.

Anda dapat mengajukan kueri feed publik Blogger tanpa autentikasi. Oleh karena itu, Anda tidak perlu menetapkan kredensial atau melakukan autentikasi AuthSub sebelum mengambil postingan dari blog publik.

Mengambil semua postingan blog

Untuk mengambil postingan pengguna, panggil metode getFeed yang sama dengan yang digunakan untuk mengambil metafeed blog, tetapi kali ini kirim URL feed postingan blog:

query.Uri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
feed = service.Query(query);
Console.WriteLine(feed.Title.Text);
foreach (AtomEntry entry in feed.Entries)
{
  Console.WriteLine("Entry Title: " + entry.Title.Text);
}

Mengambil postingan menggunakan parameter kueri

Blogger Data API memungkinkan Anda meminta serangkaian entri yang cocok dengan kriteria yang ditentukan, seperti meminta postingan blog yang dipublikasikan atau diperbarui dalam rentang tanggal tertentu. Untuk melakukannya, buat objek FeedQuery dan teruskan ke metode Service.Query().

Misalnya, untuk mengirim kueri rentang tanggal, tetapkan anggota MinPublication dan MaxPublication objek FeedQuery. Cuplikan kode berikut mencetak judul setiap postingan blog yang dipublikasikan antara waktu mulai dan waktu berakhir:

FeedQuery query = new FeedQuery();
query.Uri = new Uri("http://www.blogger.com/feeds/" + blogId + "/posts/default");
query.MinPublication = new DateTime(2006, 1, 1);
query.MaxPublication = new DateTime(2007, 4, 12);
AtomFeed feed = service.Query(query);
foreach (AtomEntry entry in feed.Entries)
{
  Console.WriteLine("  Entry Title: " + entry.Title.Text);
}

Perhatikan bahwa objek FeedQuery dibuat menggunakan URL feed postingan yang sama dengan yang digunakan untuk mengambil postingan.

Blogger Data API mendukung parameter kueri berikut:

alt
Jenis feed yang akan ditampilkan, seperti atom (default) atau rss.
/category
Tentukan kategori (juga dikenal sebagai label) untuk memfilter hasil feed. Misalnya, http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie menampilkan entri dengan label Fritz dan Laurie.
hasil maks
Jumlah maksimum entri yang akan ditampilkan.
praorder
Urutan yang menampilkan entri, seperti lastmodified (default), starttime, atau updated.
dipublikasikan-min, dipublikasikan-maks
Batas pada tanggal publikasi entri.
indeks awal
Indeks berbasis 1 dari hasil pertama yang akan diambil (untuk paging).
diperbarui-menit, diperbarui-maks
Batas pada tanggal update entri. Parameter kueri ini diabaikan kecuali jika parameter orderby disetel ke updated.

Untuk informasi selengkapnya tentang parameter kueri, lihat Panduan Referensi Blogger Data API dan Panduan Referensi Google Data API.

Memperbarui postingan

Untuk memperbarui postingan blog yang sudah ada, pertama-tama Anda harus mengambil entri yang ingin diperbarui, kemudian mengubahnya, lalu mengirimkannya ke Blogger menggunakan metode Update() entri. Cuplikan kode berikut mengubah judul entri blog, dengan asumsi bahwa Anda telah mengambil entri dari server.

static AtomEntry EditEntry(AtomEntry toEdit)
{
  // Edit the entry by changing the Title and calling Update().
  if (toEdit != null)
  {
    toEdit.Title.Text = "Marriage Woes!";
    toEdit = toEdit.Update();
  }
  return toEdit;
}

Kode di atas menampilkan AtomEntry yang berisi seluruh postingan yang baru diubah. Untuk memperbarui properti lainnya, cukup tetapkan properti tersebut di objek AtomEntry sebelum memanggil Update().

Catatan: Mengubah data penulis yang terkait dengan postingan saat ini tidak didukung.

Menghapus postingan

Untuk menghapus postingan, panggil metode Delete pada objek AtomEntry yang ada, seperti ini:

static void DeleteEntry(AtomEntry toDelete)
{
  // Delete the edited entry
  if (toDelete != null)
  {
    toDelete.Delete();
  }
}

Komentar

Blogger Data API memungkinkan Anda membuat, mengambil, dan menghapus komentar. Memperbarui komentar tidak didukung (juga tidak tersedia di antarmuka web).

Membuat komentar

Untuk memposting komentar, buat objek AtomEntry dan sisipkan seperti berikut:

AtomEntry comment;
comment = new AtomEntry();
comment.Title.Text = "This is my first comment";
comment.Content.Content = "This is my first comment";
Uri commentPostUri = new Uri("http://www.blogger.com/feeds/" + blogId + "/" + entryId + "/comments/default");
postedComment = service.Insert(commentPostUri, comment);

Catatan: Saat ini, Anda hanya dapat memposting komentar ke blog milik pengguna yang diautentikasi.

Catatan: Menyetel penulis kustom untuk komentar saat ini tidak didukung. Semua komentar baru akan muncul seolah-olah komentar tersebut dibuat oleh pengguna yang saat ini sudah diautentikasi.

Mengambil komentar

Anda dapat mengambil komentar untuk postingan tertentu dari URL feed komentar postingan.

static void ListEntryComments(Service service, Uri commentUri)
{
  if (commentUri != null)
  {
    // Retrieve all comments on a blog entry
    FeedQuery query = new FeedQuery();
    query.Uri = commentUri;
    AtomFeed feed = service.Query(query);
    foreach (AtomEntry entry in feed.Entries)
    {
      Console.WriteLine("  Comment Title: " + entry.Title.Text);
    }
  }
}

Atau, Anda bisa mendapatkan komentar dari semua postingan menggunakan URL feed komentar blog:

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

Menghapus komentar

Untuk menghapus komentar, panggil metode Delete() pada objek AtomEntry yang sudah ada seperti ini:

static void DeleteComment(AtomEntry commentEntry)
{
  if (commentEntry != null)
  {
    // Delete the comment.
    commentEntry.Delete();
  }
}

Kembali ke atas