Penting: Kami akan menghentikan dukungan untuk Google Data API v2.0 pada 30 September 2024. Untuk memastikan fungsi berkelanjutan, update aplikasi Anda yang mengandalkan solusi Google v2.0 Data API ke versi API terbaru. Untuk versi terbaru, gunakan link di menu navigasi samping kiri. Catatan: meskipun beberapa permintaan GET (seperti postingan listingan) akan terus didukung sebagai URL feed, ada perbedaan kecil dalam perilakunya. Untuk informasi selengkapnya, lihat Dokumentasi Bantuan Blogger.
Blogger Data API memungkinkan aplikasi klien melihat dan mengupdate Blogger konten dalam bentuk feed Google Data API.
Aplikasi klien Anda dapat menggunakan Blogger Data API untuk membuat blog baru postingan, edit atau hapus postingan blog yang ada, dan kueri postingan blog yang cocok kriteria tertentu.
Selain memberikan beberapa latar belakang tentang kemampuan Blogger Data API, dokumen ini memberikan contoh interaksi Data API dasar menggunakan library klien .NET. Jika Anda tertarik untuk lebih memahami protokol dasar yang digunakan library, lihat bagian Protokol dalam panduan developer ini.
Daftar Isi
Audiens
Dokumen ini ditujukan bagi programmer yang ingin menulis aplikasi klien .NET yang dapat berinteraksi dengan Blogger.
Dokumen ini mengasumsikan bahwa Anda memahami ide umum di balik protokol Google Data API.
Untuk informasi referensi tentang class dan metode yang disediakan oleh library klien, lihat referensi API library klien .NET. Untuk informasi referensi Blogger Data API umum, lihat Panduan referensi protokol.
Memulai
Untuk mendapatkan bantuan terkait penyiapan library klien, lihat Panduan Memulai.
Untuk menggunakan pustaka klien .NET, Anda memerlukan
waktu proses .NET 1.1, dan Anda
juga harus sudah ada di semua patch. Setelah mendownload
library klien, Anda akan menemukan DLL yang diperlukan untuk memulai di
subdirektori lib/Release
distribusi.
Membuat akun Blogger
Anda mungkin ingin mendaftar untuk Akun Blogger untuk tujuan pengujian. Blogger menggunakan Akun Google, jadi jika Anda sudah memiliki akun Google, Anda sudah siap.
Menjalankan kode contoh
Klien contoh yang berfungsi penuh, yang berisi semua kode contoh yang ditampilkan dalam dokumen ini, tersedia di project library klien .NET. Sampel ini terletak di /trunk/clients/cs/samples/blogger/ConsoleSample.cs di tab Source pada repositori SVN.
Sebelum mengompilasi dan menjalankan contoh ini, perbarui nilai
username
, password
, blogName
, dan
postId
dengan nilai yang sesuai. username
dan
Nilai password
mewakili kredensial yang digunakan untuk login
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 otentikasi, tetapi bersifat hanya baca. Jika Anda ingin mengubah blog, klien Anda harus melakukan autentikasi sebelum meminta feed pribadi. Alat ini dapat melakukan autentikasi menggunakan salah satu dari dua pendekatan: 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 penggunanya ke Akun Google. Operator situs dan klien kode tidak memiliki akses ke nama pengguna dan sandi untuk pengguna Blogger; sebagai gantinya, klien memperoleh token AuthSub khusus yang memungkinkan klien untuk bertindak atas nama pengguna tertentu. Untuk mengetahui informasi yang lebih mendetail, 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.
Misalnya, hyperlink ASP berikut ditentukan di halaman Anda:
<asp:HyperLink ID="GotoAuthSubLink" runat="server"/>
Kemudian untuk membuat URL AuthSubRequest untuk aplikasi Anda, buat file .NET panggilan library klien 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 tujuan pengalihan pengguna oleh Google setelah autentikasi.
- cakupan
- Menunjukkan bahwa aplikasi meminta token untuk mengakses feed Blogger. String cakupan yang akan digunakan adalah
http://www.blogger.com/feeds/
(tentunya dienkode URL). - aman
- Menunjukkan apakah klien meminta token aman.
- sesi
- Menunjukkan apakah token yang ditampilkan dapat ditukarkan dengan token multiguna (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 melakukan autentikasi ke URL menggunakan Akun Layanan Anda.
Setelah pengguna melakukan autentikasi, sistem AuthSub akan mengalihkan mereka ke URL
yang Anda tentukan dalam parameter kueri next
pada AuthSubRequest
. Sistem AuthSub menambahkan token otentikasi ke URL tersebut, sebagai
parameter kueri token
. Oleh karena itu, token dapat diakses sebagai variabel dalam objek Request.QueryString
halaman ASP. Pengguna akan dialihkan ke URL yang terlihat seperti ini:
http://www.example.com/RetrieveToken?token=yourAuthToken
Nilai token ini mewakili token AuthSub sekali pakai. Dalam contoh ini,
karena session = true
ditentukan, token ini dapat ditukarkan dengan
token sesi AuthSub, sebagai berikut:
SessionsessionToken = AuthSubUtil.exchangeForSessionToken(Request.QueryStringtoken, null);
Artinya, Anda meneruskan token sekali pakai ke
metode exchangeForSessionToken
, bersama dengan null
(untuk mode yang tidak terdaftar) atau kunci pribadi (untuk mode terdaftar), dan antarmuka AuthSub
akan menampilkan token sesi. Untuk mengetahui informasi selengkapnya tentang aplikasi
terdaftar dan kunci pribadi, lihat bagian "Menandatangani permintaan"
dalam dokumentasi AuthSub.
Aplikasi Anda kemudian dapat menggunakan nilai token sesi dalam interaksi berikutnya dengan Blogger. Untuk memberi tahu library klien .NET agar otomatis mengirim header Otorisasi (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 dan satu pengguna yang "diinstal" (seperti aplikasi desktop). Setel 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 yang ingin kita berinteraksi dengannya. Parameter kedua adalah nama
aplikasi dalam formulir
companyName—applicationName—versionID. Kita juga
setel Service.RequestFactory
agar hanya menggunakan GOOGLE
jenis akun Anda untuk memungkinkan autentikasi yang tepat bagi pengguna G Suite.
Untuk informasi selengkapnya tentang autentikasi ClientLogin, termasuk contoh permintaan dan respons, lihat dokumen Autentikasi untuk yang Terinstal Aplikasi.
Catatan: Gunakan token yang sama untuk semua permintaan dalam sesi tertentu; jangan dapatkan token baru untuk setiap permintaan Blogger.
Catatan: Seperti yang dijelaskan dalam dokumentasi ClientLogin, permintaan autentikasi dapat gagal dan meminta tantangan CAPTCHA. Jika Anda ingin Google mengeluarkan dan menangani verifikasi CAPTCHA, kirim 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 user; feed tersebut dikenal sebagai "metafeed."
Kode contoh berikut menggunakan objek Service
yang diautentikasi
untuk mengambil feed meta kemudian 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); } }
Catat URL yang digunakan oleh metode getFeed
. Ini adalah default
URL feed meta; sistem itu menghasilkan daftar blog
untuk pengguna yang saat ini diotentikasi.
Untuk mengakses feed bagi pengguna lain, Anda dapat memasukkan ID pengguna sebagai pengganti
default
di URL metafeed. ID pengguna adalah string angka
di akhir URL profil pengguna.
Membuat postingan
Blogger Data API memungkinkan Anda membuat dan memublikasikan entri blog baru, serta membuat draf entri.
Semua contoh berikut mengasumsikan bahwa Anda telah
Objek Service
.
Catatan: Menetapkan penulis kustom untuk postingan saat ini tidak didukung. Semua postingan baru akan muncul seolah-olah dibuat oleh pengguna yang saat ini diotentikasi.
Memublikasikan postingan blog
Anda dapat menggunakan library klien .NET untuk memublikasikan entri blog baru.
Pertama, buat objek AtomEntry
untuk mewakili postingan blog.
Kemudian, Anda dapat menetapkan judul, konten, dan atribut lainnya dari postingan blog.
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
menggunakan URL postingan layanan sebagai parameter.
Kemudian, metode akan menampilkan entri seperti yang disimpan oleh Blogger. Entri
adalah sama dengan yang Anda kirim, tetapi juga berisi berbagai elemen yang ditambahkan
oleh Blogger, misalnya ID postingan.
Jika permintaan Anda gagal karena alasan tertentu, Blogger dapat menampilkan status yang berbeda pada kode sumber. Untuk mengetahui informasi tentang kode status, lihat dokumen referensi protokol Google Data API.
Membuat draf postingan blog
Postingan draf dibuat dengan cara yang sama
seperti postingan publik, tetapi Anda harus mengatur
atribut draft
dari objek AtomEntry
. Blog
posting di atas dapat dibuat sebagai draf dengan menambahkan baris yang disorot:
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 draf postingan blog yang ada menjadi postingan yang dipublikasikan dengan mengambil postingan draf, menyetel atribut draf ke salah (false), lalu memperbarui postingan. Kita akan membahas cara mengambil dan memperbarui postingan dalam dua bagian berikutnya.
Mengambil postingan
Bagian berikut menjelaskan cara mengambil daftar posting blog, dengan dan tanpa parameter kueri.
Anda dapat melakukan kueri feed publik Blogger tanpa autentikasi. Oleh karena itu, Anda tidak perlu menetapkan kredensial atau melakukan otentikasi AuthSub sebelum mengambil postingan dari blog publik.
Mengambil semua postingan blog
Untuk mengambil postingan pengguna, panggil metode getFeed
yang sama 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 sekumpulan 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 MinPublication
dan MaxPublication
anggota objek FeedQuery
.
Cuplikan kode berikut mencetak judul setiap postingan blog yang dipublikasikan antara
waktu mulai dan waktu berakhir yang ditentukan:
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) ataurss
. - /category
- Menentukan kategori (juga disebut sebagai label) untuk memfilter hasil feed. Misalnya,
http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie
menampilkan entri dengan labelFritz
danLaurie
. - max-results
- Jumlah maksimum entri yang akan ditampilkan.
- urutan
- Urutan yang ditampilkan untuk menampilkan entri, seperti
lastmodified
(default),starttime
, atauupdated
. - dipublikasikan-min, dipublikasikan-maks
- Batas pada tanggal publikasi entri.
- start-index
- Indeks berbasis 1 dari hasil pertama yang akan diambil (untuk paging).
- diupdate-min, diupdate-maks
- Batas pada tanggal pembaruan entri. Parameter kueri ini diabaikan kecuali jika parameter
orderby
ditetapkan keupdated
.
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 ada, pertama-tama ambil entri yang ingin Anda
memperbarui, lalu mengubahnya, dan kemudian mengirimkannya ke Blogger menggunakan
Metode Update()
. Cuplikan kode berikut mengubah judul
entri blog Anda, asumsi bahwa Anda telah mengambil entri dari entri
server tertentu.
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 diperbarui. Untuk memperbarui properti lainnya, cukup setel 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
di
AtomEntry
, seperti ini:
static void DeleteEntry(AtomEntry toDelete) { // Delete the edited entry if (toDelete != null) { toDelete.Delete(); } }
Komentar
Blogger Data API memungkinkan pembuatan, pengambilan, dan penghapusan komentar. Memperbarui komentar tidak didukung (dan tidak tersedia di antarmuka web).
Membuat komentar
Untuk memposting komentar, buat objek AtomEntry
dan sisipkan sebagai 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 yang dimiliki oleh pengguna terautentikasi.
Catatan: Menetapkan penulis kustom untuk komentar saat ini tidak didukung. Semua komentar baru akan muncul seolah-olah dibuat oleh pengguna yang saat ini diotentikasi.
Mengambil komentar
Anda dapat mengambil komentar untuk postingan tertentu dari komentar postingan URL feed:
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
komentar yang ada seperti ini:
static void DeleteComment(AtomEntry commentEntry) { if (commentEntry != null) { // Delete the comment. commentEntry.Delete(); } }