Geliştirici Kılavuzu: .NET

Ö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) veya rss).
/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 hem Fritz hem de Laurie 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 veya updated.
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 parametresi updated 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();
  }
}

Başa dön