Önemli: Google Data API 2.0 sürümüne yönelik desteği 30 Eylül 2024'te sonlandıracağız. İşlevselliğin etkinlenmemesi için Google Veri API'sinin 2.0 sürümünü kullanan uygulamalarınızı en son API sürümüne güncelleyin. En son sürüm için sol taraftaki gezinme çubuğundaki bağlantıları kullanın. Not: Bazı GET istekleri (yayın listelemesi gibi) özet akışı olarak desteklenmeye devam edecektir. kullanımında küçük farklılıklar vardır. Ayrıntılı bilgi için Blogger Yardımı dokümanlarını inceleyin.
Blogger Data API, istemci uygulamaların Blogger'ı görüntülemesine ve güncellemesine olanak tanır. Google Data API feed'leri biçiminde sunulur.
İstemci uygulamanız, yeni blog yayınları oluşturmak, mevcut blog yayınlarını düzenlemek veya silmek ve belirli ölçütlere uyan blog yayınlarını sorgulamak için Blogger Veri API'sini kullanabilir.
Bu doküman, Blogger Data API'sinin özellikleri hakkında bilgi vermenin yanı sıra .NET istemci kitaplığını kullanan temel Data API etkileşimlerine dair örnekler sunar. Kitaplığın kullandığı temel protokol hakkında daha fazla bilgi edinmek istiyorsanız bu geliştirici kılavuzunun Protokol bölümünü inceleyin.
İçindekiler
Kitle
Bu belge, .NET istemcisi yazmak isteyen programcılar için hazırlanmıştır Blogger ile etkileşimde bulunabilecek uygulamalar.
Bu belgede, Google Veri API'lerinin arkasındaki genel fikirleri anladığınız varsayılır. protokolüne bakın.
hakkında daha fazla bilgi edinmek için .NET istemci kitaplığı API'sini inceleyin referans. Blogger Data API ile ilgili genel referans bilgileri için Protokol referans kılavuzuna bakın.
Başlarken
İstemci kitaplığını ayarlama konusunda yardım için Başlangıç Kılavuzu'na bakın.
.NET istemci kitaplığını kullanmak için .NET 1.1 çalışma zamanına ve
tüm yamalarda da güncel olmalıdır. İndirdikten sonra
başlamak için ihtiyacınız olan DLL'leri
Dağıtımın lib/Release
alt dizini.
Blogger hesabı oluşturma
Bir Google Hesabı'na kaydolmak isteyebilirsiniz. Blogger hesabınız olması gerekir. Blogger Google Hesaplarını kullanır. Bu nedenle bir Google hesabınız varsa hazırsınız demektir.
Örnek kodu çalıştırma
Bu dokümanı, .NET istemci kitaplığı projesinde bulunur. Örnek, SVN deposunun Kaynak sekmesinde /trunk/clients/cs/samples/blogger/ConsoleSample.cs adresinde bulunur.
Bu örneği derleyip çalıştırmadan önce
username
, password
, blogName
ve
postId
için uygun değerleri kullanın. username
ve
password
değerleri, şuraya giriş yapmak için kullanılan kimlik bilgilerini temsil eder:
Blogger. blogName
değeri, blogunuzda blogger'ın başlangıcıdır
URL'yi tıklayın.
Örnek istemci, sağlanan blogda birkaç işlem gerçekleştirir. Blogger Data API'nin kullanımını gösterir.
Bu belgedeki örnekleri kendi kodunuzda derlemek için aşağıdaki using
ifadelerine ihtiyacınız vardır:
using Google.GData.Client; using System.Net; using System.Xml; using System.Text.RegularExpressions;
Blogger hizmetinde kimlik doğrulama
Blogger Veri API'sını kullanarak hem genel hem de özel yayınlara erişebilirsiniz. Herkese açık feed'ler herhangi bir kimlik doğrulaması gerektirmez ancak salt okunurdur. Blogları değiştirmek istiyorsanız istemcinizin gizli feed'ler istemeden önce kimliğini doğrulaması gerekir. İki yaklaşımdan birini kullanarak kimlik doğrulaması yapabilir: AuthSub proxy kimlik doğrulaması veya ClientLogin kullanıcı adı/şifre kimlik doğrulaması.
Genel olarak Google Veri API'leriyle kimlik doğrulama hakkında daha fazla bilgi için kimlik doğrulama belgelerine bakın.
AuthSub proxy kimlik doğrulaması
AuthSub proxy kimlik doğrulaması, şunları yapması gereken web uygulamaları tarafından kullanılır: kullanıcılarının kimliklerini Google Hesaplarına doğrulatmaları. Web sitesi operatörü ve istemci kodun Blogger kullanıcısının kullanıcı adı ve şifresine erişimi yok; Bunun yerine müşteri, müşterinin işlem yapmasını sağlayan özel AuthSub jetonları alır ekleyebilirsiniz. Daha ayrıntılı bilgi için AuthSub belgelerine bakın.
Bir kullanıcı uygulamanızı ilk kez ziyaret ettiğinde kimliği henüz doğrulanmamıştır. Bu durumda, kullanıcıların bloglarına erişim isteğinizin kimliğini doğrulamak için bazı bilgiler ve kullanıcıyı bir Google sayfasına yönlendiren bir bağlantı göstermeniz gerekir.
Sayfanızda aşağıdaki ASP köprüsünün tanımlandığını varsayalım:
<asp:HyperLink ID="GotoAuthSubLink" runat="server"/>
Ardından, uygulamanız için AuthSubRequest URL'sini oluşturmak üzere aşağıdaki gibi bir .NET istemci kitaplığı çağrısı yapın:
GotoAuthSubLink.Text = "Login to your Google Account"; GotoAuthSubLink.NavigateUrl = AuthSubUtil.getRequestUrl("http://www.example.com/RetrieveToken", "http://www.blogger.com/feeds/", false, true);
getRequestUrl
yöntemi aşağıdaki parametreleri alır (AuthSubRequest işleyicisi tarafından kullanılan sorgu parametrelerine karşılık gelir):
- sonraki
- Google'ın kimlik doğrulamasından sonra kullanıcıyı yönlendirmesi gereken sayfanın URL'si.
- kapsam
- Uygulamanın Blogger feed'lerine erişmek için jeton istediğini gösterir. Kullanılacak kapsam dizesi
http://www.blogger.com/feeds/
'tir (elbette URL kodlamalıdır). - güvenli
- İstemcinin güvenli bir jeton isteyip istemediğini belirtir.
- oturum
- Döndürülen jetonun, çok kullanımlık (oturum) jetonuyla değiştirilip değiştirilemeyeceğini gösterir.
Yukarıdaki örnekte, güvenli jeton istemeyen bir çağrı gösterilmektedir (secure
değeri false
'dır). Bunun sonucunda oluşan istek URL'si şu şekilde görünebilir:
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
Kullanıcı, Google'ın site bağlantısını izler ve Google'a giriş yapar. Hesap'a dokunun.
Kimlik doğrulaması yapıldıktan sonra AuthSub sistemi kullanıcıyı URL'ye yönlendirir
AuthSubRequest'in next
sorgu parametresinde belirttiğiniz
URL'yi tıklayın. AuthSub sistemi, token
sorgu parametresinin değeri olarak bu URL'ye bir kimlik doğrulama jetonu ekler. Bu nedenle jeton
ASP sayfasının Request.QueryString
bölümünde değişken olarak erişilebilir
nesnesini tanımlayın. Kullanıcı şuna benzeyen bir URL'ye yönlendirilir:
http://www.example.com/RetrieveToken?token=yourAuthToken
Bu jeton değeri, tek kullanımlık bir AuthSub jetonunu temsil eder. Bu örnekte
session = true
belirtildiğinden, bu jeton
aşağıdaki gibi bir AuthSub oturum jetonu içerir:
SessionsessionToken = AuthSubUtil.exchangeForSessionToken(Request.QueryStringtoken, null);
Yani tek kullanımlık jetonunuzu
null
ile birlikte exchangeForSessionToken
yöntemi
(kayıtsız mod için) veya özel anahtar (kayıtlı mod için) ve AuthSub
arayüzü bir oturum jetonu döndürür. Kayıtlılar hakkında daha fazla bilgi için
için aşağıdaki "İmzalama istekleri" bölümüne bakın.
bölümünde bulabilirsiniz.
Uygulamanız, daha sonra ve Blogger ile etkileşimleriniz olsun. .NET istemci kitaplığına otomatik olarak her istekle birlikte Yetkilendirme başlığını (oturum jetonunu içerir) şu:
GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("blogger", "BloggerSampleApp"); authFactory.Token = SessionsessionToken.ToString(); Service service = new Service(authFactory.ApplicationName); service.RequestFactory = authFactory;
ClientLogin kullanıcı adı/şifre kimlik doğrulaması
İstemciniz bağımsız, tek kullanıcılı "yüklü" bir istemciyse (masaüstü uygulaması gibi) ClientLogin kimlik doğrulamasını kullanın. Hizmet nesnenizin kimlik bilgilerini aşağıdaki gibi ayarlayın:
Service service = new Service("blogger", "exampleCo-exampleApp-1"); service.Credentials = new GDataCredentials("user@example.com", "secretPassword"); GDataGAuthRequestFactory factory = (GDataGAuthRequestFactory) service.RequestFactory; factory.AccountType = "GOOGLE";
Yukarıdaki snippet'te, Service
sınıfının yapıcısına iki parametre iletiyoruz. İlk parametre, etkileşimde bulunmak istediğimiz hizmetin adıdır.
somut olarak ortaya koyar. İkinci parametre,
companyName-applicationName-versionID. Ayrıca
Service.RequestFactory
öğesini yalnızca GOOGLE
kullanacak şekilde ayarlayın
hesap türünü kullanarak G Suite kullanıcılarının kimlik doğrulamasının uygun biçimde yapılmasını sağlayın.
ClientLogin kimlik doğrulaması hakkında daha fazla bilgi edinin. görmek istiyorsanız Yüklenenler İçin Kimlik Doğrulama Uygulamalar belgeleri.
Not: Belirli bir oturumdaki tüm istekler için aynı jetonu kullanın. Her Blogger isteği için yeni bir jeton edinmeyin.
Not: ClientLogin'de açıklandığı gibi
Aksi takdirde, kimlik doğrulama isteği başarısız olabilir ve bir CAPTCHA isteğinde bulunabilir.
isteyebilirsiniz. Google'ın CAPTCHA sorgusunu gönderip işlemesini istiyorsanız kullanıcıyı https://www.google.com/accounts/DisplayUnlockCaptcha?service=blogger
(ClientLogin dokümanlarında verilen CAPTCHA işleme URL'si yerine) adresine yönlendirin.
Blog listesi alınıyor
Blogger Data API, belirli bir kullanıcının bloglarını listeleyen bir feed sağlar. Bu feed, "meta feed" olarak bilinir.
Aşağıdaki örnek kodda, meta feed'i almak için kimliği doğrulanmış bir Service
nesnesi kullanılır ve ardından her blogun başlığı yazdırılır.
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); } }
getFeed
yöntemi tarafından kullanılan URL'yi not edin. Bu, varsayılan ayardır
meta feed URL'si geçerli olan kullanıcı için blog listesini döndürür.
Farklı bir kullanıcının feed'ine erişmek için
default
değerini alır. Kullanıcının kimliği, kullanıcının profil URL'sinin sonundaki rakamlardan oluşan dizedir.
Yayın oluşturma
Blogger Veri API'si, yeni blog girişleri oluşturmanıza ve yayınlamanıza, ayrıca giriş taslakları oluşturmanıza olanak tanır.
Aşağıdaki örneklerin tümü, kimlik doğrulaması yapılmış bir
Service
nesne algılandı.
Not: Yayınlar için özel yazar ayarlamak şu anda desteklenmiyor. Tüm yeni gönderiler, kimliği doğrulanmış kullanıcı tarafından oluşturulmuş gibi görünür.
Blog yayını yayınlama
Yeni blog girişleri yayınlamak için .NET istemci kitaplığını kullanabilirsiniz.
İlk olarak, blog yayınını temsil edecek bir AtomEntry
nesnesi oluşturun.
Ardından, blog yayınının başlığını, içeriğini ve diğer özelliklerini ayarlayabilirsiniz.
Son olarak, yayını eklemek için Service
nesnesini kullanın. Yeni bir blog yayınını nasıl yayınlayacağınıza dair bir örnek aşağıda verilmiştir:
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);
Insert
yöntemi, hizmetin yayın URL'sini parametre olarak alır.
Ardından yöntem, girişi Blogger tarafından depolandığı şekilde döndürür. Döndürülen giriş, gönderdiğiniz girişle aynıdır ancak Blogger tarafından eklenen çeşitli öğeleri (ör. yayın kimliği) de içerir.
İsteğiniz herhangi bir nedenle başarısız olursa Blogger farklı bir durum kodu döndürebilir. Durum kodları hakkında daha fazla bilgi için Google Verileri API protokolü referans belgesi
Taslak blog yayını oluşturma
Taslak yayınlar, herkese açık yayınlarla aynı şekilde oluşturulur ancak AtomEntry
nesnesinin draft
özelliğini ayarlamanız gerekir. Yukarıdaki blog yayını, vurgulanmış satır eklenerek taslak olarak oluşturulabilir:
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);
Mevcut bir taslak blog yayınını yayınlanmış bir yayına dönüştürebilirsiniz: taslak özelliğini false (yanlış) olarak ayarlayıp gönderin. Sonraki iki bölümde, yayınların alınmasını ve güncellenmesini ele alacağız.
Yayınlar alınıyor
Aşağıdaki bölümlerde, sorgu parametreleri ile ve sorgu parametreleri olmadan blog yayınlarının listesinin nasıl alınacağı açıklanmaktadır.
Blogger genel özet akışını kimlik doğrulaması olmadan sorgulayabilirsiniz. Bu nedenle, herkese açık bir blogdan yayın almadan önce kimlik bilgilerini ayarlamanız veya AuthSub kimlik doğrulaması yapmanız gerekmez.
Tüm blog yayınları alınıyor
Kullanıcının yayınlarını almak için, blog meta feed'ini almak için kullanılan getFeed
yöntemini çağırın ancak bu kez blog yayını feed'i URL'sini gönderin:
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); }
Sorgu parametrelerini kullanarak yayınları alma
Blogger Data API, belirli ölçütlere uyan bir giriş grubu istemenize olanak tanır (ör. belirli bir tarih aralığında yayınlanan veya güncellenen blog yayınlarını isteme). Bunun için bir FeedQuery
nesnesi oluşturup Service.Query()
yöntemine iletmeniz gerekir.
Örneğin, tarih aralığı sorgusu göndermek için MinPublication
ve FeedQuery
nesnesinin MaxPublication
üyesi.
Aşağıdaki kod snippet'i, belirtilen başlangıç zamanı ile bitiş zamanı arasında yayınlanan her blog yayınının başlığını yazdırır:
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); }
FeedQuery
nesnesinin, yayınları almak için kullanılan aynı yayın feed'i URL'si kullanılarak oluşturulduğuna dikkat edin.
Blogger Data API, aşağıdaki sorgu parametrelerini destekler:
- alt
- Döndürülecek feed'in türü (ör.
atom
(varsayılan) veyarss
). - /category
- Feed sonuçlarını filtrelemek için kategorileri (etiket olarak da bilinir) belirtin. Örneğin,
http://www.blogger.com/feeds/blogID/posts/default/-/Fritz/Laurie
hemFritz
hem deLaurie
etiketlerini içeren girişleri döndürür. - max-results
- Döndürülecek maksimum giriş sayısı.
- sıralama ölçütü
- Girişlerin döndürüleceği sıra; örneğin
lastmodified
(varsayılan),starttime
veyaupdated
. - published-min, published-max
- Giriş yayınlanma tarihlerinin sınırları.
- start-index
- Alınacak ilk sonucun 1 tabanlı dizini (sayfalama için).
- updated-min, updated-max
- Giriş güncelleme tarihlerinin sınırları.
orderby
parametresiupdated
olarak ayarlanmazsa bu sorgu parametreleri yoksayılır.
Sorgu parametreleri hakkında daha fazla bilgi için Blogger Veri API'sı Referansı'na bakın. Rehber ve Google Veri API'leri Başvuru Kılavuzu.
Yayınlar güncelleniyor
Mevcut bir blog yayınını güncellemek için öncelikle
sonra bu girişte değişiklik yapmanız ve ardından girişin
Update()
yöntemini çağırın. Aşağıdaki kod snippet'i, bir
bu girişte sitenin güvenli olup olmadığını
sunucu.
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; }
Yukarıdaki kod,AtomEntry
yeni güncellenmiş bir yayın oluşturun. Diğer özellikleri güncellemek için Update()
işlevini çağırmadan önce bunları AtomEntry
nesnesinde ayarlamanız yeterlidir.
Not: Şununla ilişkili yazar verileri değiştiriliyor: gönderileri şu anda desteklenmiyor.
Yayınlar siliniyor
Bir yayını silmek için mevcut bir AtomEntry
nesnesinde Delete
yöntemini çağırın. Örneğin:
static void DeleteEntry(AtomEntry toDelete) { // Delete the edited entry if (toDelete != null) { toDelete.Delete(); } }
Yorumlar
Blogger Data API, yorum oluşturmanıza, almanıza ve silmenize olanak tanır. Yorumların güncellenmesi desteklenmez (bu özellik web'de de kullanılamaz) arayüz).
Yorum oluşturma
Yorum yayınlamak için bir AtomEntry
nesnesi oluşturun ve aşağıdaki gibi ekleyin:
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);
Not: Şu anda yalnızca kimliği doğrulanmış kullanıcının sahip olduğu bir bloga yorum gönderebilirsiniz.
Not: Yorumlar için özel bir yazar ayarlamak şu anda desteklenmiyor. Tüm yeni yorumlar şu kullanıcı tarafından oluşturulmuş gibi görünür: kimliği doğrulanmış geçerli kullanıcıdır.
Yorum alma
Belirli bir gönderiye ait yorumları, gönderinin yorum feed'i URL'sinden alabilirsiniz:
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); } } }
Dilerseniz blogun yorum feed'ini kullanarak tüm yayınlardaki yorumları alabilirsiniz URL:
http://www.blogger.com/feeds/blogID/comments/default
Yorumları silme
Bir yorumu silmek için mevcut bir yorum AtomEntry
nesnesinde Delete()
yöntemini şu şekilde çağırın:
static void DeleteComment(AtomEntry commentEntry) { if (commentEntry != null) { // Delete the comment. commentEntry.Delete(); } }