Geliştirici Kılavuzu: JavaScript

Blogger Data API, istemci uygulamaların Blogger içeriğini Google Data API feed'leri biçiminde görüntülemesine ve güncellemesine olanak verir.

İstemci uygulamanız Blogger Data API'yi kullanarak yeni blog yayınları oluşturabilir, mevcut blog yayınlarını düzenleyebilir veya silebilir, ayrıca belirli ölçütlere uyan blog yayınlarını sorgular.

Bu belgede, Blogger Data API'nın işlevleriyle ilgili temel bilgilerin yanı sıra JavaScript istemci kitaplığının kullanıldığı temel Data API etkileşimlerine dair örnekler sağlanmaktadır. Kitaplığın kullandığı temel protokol hakkında daha fazla bilgi edinmek isterseniz bu geliştirici kılavuzunun Protokol bölümüne bakın.

İçindekiler

Kitle

Bu belge, Blogger ile etkileşimde bulunabilecek JavaScript istemci uygulamaları yazmak isteyen programcılar için hazırlanmıştır. JavaScript istemci kitaplığını kullanan temel Data API etkileşimlerine dair bir dizi örnek sunar.

Blogger Data API referans bilgileri için Protokol referans kılavuzuna bakın. Bu belgede, Google Veri API'leri protokolü ile ilgili genel fikirlerin yanı sıra JavaScript istemci kitaplığı tarafından kullanılan veri modeli ve kontrol akışı hakkında bilgi sahibi olduğunuz varsayılmaktadır. Ayrıca, JavaScript'te programlamayı bildiğinizi de varsayar.

İstemci kitaplığı tarafından sağlanan sınıflar ve yöntemler hakkında referans bilgiler için JavaScript istemci kitaplığı API referansına bakın.

Bu belge, düzenli olarak okunacak şekilde tasarlanmıştır. Her örnek, önceki örneklere dayanarak hazırlanmıştır.

Kullanım şartları

JavaScript istemci kitaplığını kullanırken Google JavaScript İstemci Kitaplığı Kullanım Şartları'na uymayı kabul edersiniz.

Desteklenen ortamlar hakkında

Şu anda yalnızca tarayıcıdaki bir web sayfasında çalışan JavaScript istemci uygulamalarını destekliyoruz. Şu anda desteklenen tarayıcılar Firefox 1.5 ve üzeri ile Internet Explorer 6.0 ve sonraki sürümlerdir.

Hizmetin sunucusuyla yapılan tüm iletişimler JavaScript istemci kitaplığı tarafından işlenir. Deneyimli bir JS geliştiricisiyseniz şunu düşünebilirsiniz: "Peki ama aynı kaynak politikası hakkında ne düşünüyorsunuz? JavaScript istemci kitaplığı, istemcinizin tarayıcı güvenlik modeliyle uyumluluğu sürdürürken herhangi bir alandan Google Data API istekleri göndermesine olanak tanır.

Başlarken

JavaScript istemci uygulaması yazabilmeniz için kitaplığı edinmek üzere birtakım ayarlar yapmanız gerekir.

Blogger hesabı oluşturma

Test amacıyla bir Blogger hesabına kaydolmak isteyebilirsiniz. Blogger Google Hesapları'nı kullanır, yani bir Google hesabınız varsa hâlâ hazırsınız demektir.

Kitaplık edinme

İstemcinizin istemci kitaplığını kullanabilmesi için istemciden sunucu kitaplığı kodunu istemesi gerekir.

Google AJAX API yükleyicisini getirmek için HTML dokümanınızın <head> bölümünde bir <script> etiketi kullanarak başlayın:

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

Yükleyiciyi aldıktan sonra Google Data API istemci kitaplığını edinmek için JavaScript kurulum kodunuzda aşağıdaki satırı kullanın. Bu satır, HTML dokümanınızın <head> bölümünden (veya HTML dokümanınızın <head> bölümündeki <script> etiketi kullanılarak eklenen bir JavaScript dosyasından) çağırılmalıdır:

google.load("gdata", "1.x");

İkinci google.load() parametresi, JavaScript istemci kitaplığının istenen sürüm numarasıdır.Sürüm numaralandırma şemamız, Google Haritalar API'si tarafından kullanılan şemaya göre modellenir. Olası sürüm numaraları ve bunların ne anlama geldiği aşağıda açıklanmıştır:

"1"
Sürüm 1'in sondan ikinci revizyonu.
"1.x"
Ana sürüm 1'in en son düzeltmesi.
"1.s"
Ana sürüm 1'in en son kararlı düzeltmesi. Bazen geliştiricilerden aldığımız geri bildirimlere dayanarak istemci kitaplığının belirli bir sürümünü "kararlı" olarak açıklarız. Ancak, bu sürümde en yeni özellikler bulunmayabilir.
"1.0", "1.1&vb.
Belirtilen büyük ve küçük bir düzeltme numarasıyla kitaplığın belirli bir sürümü.

google.load() numarasını aradıktan sonra yükleyiciye, sayfanın yüklenmesinin bitmesini bekleyip kodunuzu çağırmasını sağlamanız gerekir:

google.setOnLoadCallback(getMyBlogFeed);

Burada getMyBlogFeed(), bu dokümanın sonraki bölümlerinde açıklayacağı bir işlevdir. <body> öğesine bir onload işleyici eklemek yerine bu yaklaşımı kullanın.

Blogger hizmetinde kimlik doğrulaması

Blogger Data API'yi kullanarak hem herkese açık hem de gizli feed'lere erişebilirsiniz. Herkese açık feed'ler kimlik doğrulama gerektirmez ancak salt okunurdur. Bloglarda değişiklik yapmak istiyorsanız müşterinizin, özel feed istemeden önce kimliğini doğrulaması gerekir.

JavaScript istemci kitaplığı, AuthSub kimlik doğrulama sistemini kullanır. Genel olarak Google Veri API'leri ile kimlik doğrulama hakkında daha fazla bilgi edinmek için kimlik doğrulama belgelerini inceleyin.

AuthSub proxy kimlik doğrulaması

AuthSub proxy kimlik doğrulaması, kullanıcılarının Google Hesaplarında kimliklerini doğrulaması gereken web uygulamaları tarafından kullanılır. Web sitesi operatörü ve istemci kodu, Blogger kullanıcısının kullanıcı adı ve şifresine erişemez. Bunun yerine, istemci, istemcinin belirli bir kullanıcı adına işlem yapmasına olanak tanıyan özel AuthSub jetonları alır.

Web tabanlı bir JavaScript istemcisinin kimlik doğrulama sürecinde ne olduğuna dair kısa bir genel bakışı burada bulabilirsiniz:

  1. İstemci uygulaması, istemci kitaplığı tarafından sağlanan google.accounts.user.login() yöntemini çağırarak, kullanılacak Google hizmetini belirten bir "kapsam" değeri geçirir. Blogger'da kapsam "http://www.blogger.com/feeds/".
  2. İstemci kitaplığı, tarayıcıyı hizmete erişmek için kimlik bilgilerini girebilecek Google’ın "Erişim İsteği" sayfasına gönderir.
  3. Kullanıcı başarılı bir şekilde giriş yaparsa AuthSub sistemi, tarayıcıyı tekrar web istemcisinin URL'sine göndererek kimlik doğrulama jetonunu iletir.
  4. JavaScript istemci kitaplığı, jetonu bir çerezde depolar ve kontrolü, google.accounts.user.login() adı verilen istemci uygulamasının işlevine döndürür.
  5. İstemci uygulaması daha sonra Blogger ile etkileşimde bulunan istemci kitaplığı yöntemlerini çağırdığında, istemci kitaplığı jetonu otomatik olarak tüm isteklere ekler.

Not: JavaScript istemci kitaplığının bir web tarayıcısında kimliği doğrulanmış Blogger isteklerinde bulunabilmesi için sayfanız, sayfanızla aynı alanda barındırılan bir resim içermelidir. Tek piksellik şeffaf bir resim de dahil olmak üzere tüm resimler olabilir ancak sayfada resim olmalıdır. Resmin sayfanızda görünmemesini istiyorsanız resmi oluşturma alanının dışına yerleştirmek için <img> etiketinin style özelliğini kullanabilirsiniz. Örneğin: style="position:absolute; top: -1000px;"

Giriş yapan müşteri uygulaması kodunu burada bulabilirsiniz. setupMyService() işlevini daha sonra diğer kodlardan çağıracağız.

function logMeIn() {
  scope = "http://www.blogger.com/feeds/";
  var token = google.accounts.user.login(scope);
}

function setupMyService() {
  var myService =
    new google.gdata.blogger.BloggerService('exampleCo-exampleApp-1');
  logMeIn();
  return myService;
}

İpucu: Kullanıcıdan giriş işlemini manuel olarak başlatmasını istemek için bir giriş düğmesi veya başka bir kullanıcı giriş mekanizması sağlamanızı önemle tavsiye ederiz. Bunun yerine, kullanıcı etkileşimi beklemeden yükleme işleminden hemen sonra google.accounts.user.login() çağırırsanız kullanıcının sayfanızda ilk gördüğü sayfa bir Google giriş sayfası olur. Kullanıcı giriş yapmamaya karar verirse Google kullanıcıyı sayfanıza geri yönlendirmez. Dolayısıyla, kullanıcının bakış açısından sayfanızı ziyaret etmeye çalıştı, ancak başka bir yere gönderildi. Bu senaryo, kullanıcılar için kafa karıştırıcı ve can sıkıcı olabilir. Bu dokümandaki örnek kodda, örneği basit tutmak için, yüklemeden hemen sonra google.accounts.user.login() yöntemini çağıracağız ancak bu yaklaşımı gerçek dünyadaki istemci uygulamaları için önermiyoruz.

token adlı değişkenle yapmanız gereken bir işlem olmadığını unutmayın. İstemci kitaplığı jetonu takip eder, dolayısıyla sizin yapmanız gerekmez.

Not: Yeni bir BloggerService nesnesi oluşturduğunuzda istemci kitaplığı, istemcinin çalıştığı tarayıcının desteklenip desteklenmediğini kontrol eden google.gdata.client.init() adlı bir yöntemi çağırır. Bir hata varsa istemci kitaplığı kullanıcıya bir hata mesajı gösterir. Bu tür hataları kendiniz çözmek istiyorsanız hizmeti oluşturmadan önce google.gdata.client.init(handleInitError) işlevini açıkça çağırabilirsiniz. Buradaki işlev, handleInitError() işlevidir. Bir init hatası oluşursa işleviniz standart bir hata nesnesi alır. Bu nesneyle istediğiniz her şeyi yapabilirsiniz.

Jeton, siz google.accounts.user.logout() numaralı telefonu arayarak iptal edene kadar geçerli durumda kalır:

function logMeOut() {
  google.accounts.user.logout();
}

logout() numarasını çağırmazsanız jetonu depolayan çerez, kullanıcı tarafından silinmediği sürece iki yıl geçerlidir. Çerez, tarayıcı oturumlarında saklanır, böylece kullanıcı tarayıcısını kapatıp tekrar açabilir ve istemcinize geri dönebilir ve oturumu açık kalır.

Ancak oturum sırasında bir jetonun geçersiz hale gelebileceği olağan dışı durumlar vardır. Blogger bir jetonu reddederse, müşteriniz hatanın üstesinden gelmek için mevcut jetonu içeren çerezi kaldırmak üzere logout() kodunu ve ardından yeni, geçerli bir jeton almak üzere login() adını çağırır.

Çeşitli bağlamlarda yararlı bulabileceğiniz iki başka AuthSub yöntemi de vardır:

  • google.accounts.user.checkLogin(scope), tarayıcının belirtilen kapsamda bir kimlik doğrulama jetonuna sahip olup olmadığını belirtir.
  • google.accounts.user.getInfo(), hata ayıklama kullanımı için mevcut jeton hakkında ayrıntılı bilgi sağlar.

AuthSub ile etkileşim kurmak için JavaScript kullanma hakkında ayrıntılı bilgi ( jeton yönetimi, checkLogin() ve getInfo() üzerinde bilgiler dahil) için "AuthSub" Authentication'ı JavaScript İstemci Kitaplığı ile kullanma dokümanına bakın.

Başa dön