Przewodnik dla programistów: JavaScript

Interfejs API danych Bloggera umożliwia aplikacjom klienckim wyświetlanie i aktualizowanie treści z Bloggera w postaci kanałów interfejsu API danych Google.

Aplikacja kliencka może używać interfejsu Blogger Data API do tworzenia nowych postów na blogu, edytowania i usuwania dotychczasowych postów oraz wysyłania zapytań dotyczących postów na blogu odpowiadających konkretnym kryteriom.

Znajdziesz w nim nie tylko informacje o możliwościach interfejsu API danych Bloggera, ale także przykłady podstawowych interakcji z interfejsem Data API za pomocą biblioteki klienta w języku JavaScript. Jeśli chcesz dowiedzieć się więcej o protokole opartym na bibliotece, zapoznaj się z sekcją dotyczącą protokołu w tym przewodniku.

Spis treści

Odbiorców

Ten dokument jest przeznaczony dla programistów, którzy chcą tworzyć aplikacje klienckie JavaScript, które mogą współpracować z Bloggerem. Znajdziesz w nim serię przykładów podstawowych interakcji z interfejsem Data API przy użyciu biblioteki klienta w języku JavaScript.

Informacje o interfejsie API danych Bloggera znajdziesz w przewodniku po protokołach. W tym dokumencie założono, że rozumiesz ogólne zagadnienia związane z protokołem interfejsów API danych Google oraz schematem i procesem kontroli danych używanym przez bibliotekę klienta JavaScript. Zakładamy też, że umiesz programować w języku JavaScript.

Więcej informacji o klasach i metodach dostępnych w bibliotece klienta znajdziesz w dokumentacji interfejsu API biblioteki klienta JavaScript.

Ten dokument powinien być uporządkowany, a każdy z nich zawiera wcześniejsze przykłady.

Warunki korzystania z usługi

Korzystając z biblioteki klienta JavaScript, zgadzasz się przestrzegać Warunków korzystania z biblioteki klienta JavaScript Google.

Obsługiwane środowiska

Aktualnie obsługujemy tylko aplikacje klienckie JavaScript, które działają na stronie internetowej w przeglądarce. Obsługiwane obecnie przeglądarki to Firefox 1.5 i nowsze wersje oraz Internet Explorer w wersji 6.0 i nowszych.

Biblioteka klienta JavaScript obsługuje całą komunikację z serwerem usługi. Jeśli jesteś doświadczonym deweloperem JS, możesz pomyśleć o zasadach dotyczących tego samego źródła Biblioteka klienta JavaScript umożliwia klientowi wysyłanie żądań do interfejsu API danych Google z dowolnej domeny i zachowanie zgodności z modelem zabezpieczeń przeglądarki.

Pierwsze kroki

Zanim napiszesz aplikację kliencką JavaScript, musisz wykonać pewne czynności, aby uzyskać dostęp do biblioteki.

Tworzenie konta w Bloggerze

Jeśli chcesz, możesz założyć konto w Bloggerze na potrzeby testów. Blogger korzysta z kont Google, więc jeśli masz już konto Google, masz wszystko gotowe.

Pozyskiwanie biblioteki

Zanim klient będzie mógł korzystać z biblioteki klienta, musi wysłać do serwera kod biblioteki klienta.

Zacznij od użycia tagu <script> w sekcji <head> dokumentu HTML, aby pobrać interfejs Google AJAX API:

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

Aby pobrać bibliotekę klienta Google Data API po pobraniu programu, użyj w kodzie konfiguracji JavaScript następującego wiersza, który musi być wywołany z sekcji <head> dokumentu HTML (lub z pliku JavaScript dołączonego za pomocą tagu <script> w sekcji <head> dokumentu HTML):

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

Drugi parametr do google.load() to numer wersji żądanej biblioteki klienta JavaScript.Nasz schemat numerowania wersji jest oparty na modelu używanym przez interfejs API Map Google. Oto możliwe numery wersji i ich znaczenie:

"1"
Od ostatniej wersji głównej wersji 1.
"1.x"
Najnowsza wersja głównej wersji 1.
"1.s"
Najnowsza stabilna wersja głównej wersji 1. Czasem na podstawie opinii deweloperów zgłaszamy, że określona wersja biblioteki klienta jest „stabilna”. Może ona nie zawierać najnowszych funkcji.
"1.0", "1.1" itd.
Konkretna wersja biblioteki z określonym numerem wersji głównej i podrzędnej.

Po wywołaniu elementu google.load() musisz zaczekać, aż strona zakończy się wczytaniem, a następnie wywołać kod:

google.setOnLoadCallback(getMyBlogFeed);

Gdzie getMyBlogFeed() to funkcja, którą zdefiniujemy w dalszej sekcji tego dokumentu. Użyj tego podejścia, zamiast mieć moduł obsługi onload dołączony do elementu <body>.

Uwierzytelnianie w usłudze Blogger

Za pomocą interfejsu Blogger Data API masz dostęp do kanałów publicznych i prywatnych. Publiczne kanały nie wymagają uwierzytelniania, ale są tylko do odczytu. Jeśli chcesz zmodyfikować blogi, klient musi uwierzytelnić się przed wysłaniem żądania prywatnych kanałów.

Biblioteka klienta JavaScript korzysta z systemu uwierzytelniania AuthSub. Więcej ogólnych informacji o uwierzytelnianiu za pomocą interfejsów Google Data API znajdziesz w dokumentacji uwierzytelniania.

Uwierzytelnianie serwera proxy AuthSub

Uwierzytelnianie serwera proxy AuthSub jest używane przez aplikacje internetowe, które muszą uwierzytelniać użytkowników na kontach Google. Operator witryny i kod klienta nie mają dostępu do nazwy użytkownika ani hasła użytkownika Bloggera. Zamiast tego klient otrzymuje specjalne tokeny uwierzytelniania, które pozwalają klientowi działać w imieniu konkretnego użytkownika.

Oto krótkie omówienie tego, co się dzieje podczas uwierzytelniania klienta JavaScript w przeglądarce:

  1. Aplikacja kliencka wywołuje metodę google.accounts.user.login() udostępnioną przez bibliotekę klienta, przekazując wartość &"zakres" wskazującą, której usługi Google należy użyć. W przypadku Bloggera zakres to "http://www.blogger.com/feeds/".
  2. Biblioteka klienta przenosi przeglądarkę na stronę Google „Żądanie dostępu”, na której użytkownik może wpisać swoje dane logowania, aby zalogować się w usłudze.
  3. Jeśli użytkownik się zaloguje, system AuthSub odeśle przeglądarkę z powrotem do adresu URL klienta internetowego, przekazując token uwierzytelniania.
  4. Biblioteka klienta JavaScript przechowuje token w pliku cookie i zwraca kontrolę nad funkcją aplikacji klienckiej google.accounts.user.login().
  5. Gdy aplikacja kliencka wywołuje metody biblioteki klienta, które współdziałają z Bloggerem, biblioteka klienta automatycznie dołącza token do wszystkich żądań.

Uwaga: aby biblioteka klienta JavaScript mogła wysyłać uwierzytelnione żądania z Bloggera w przeglądarce, strona musi zawierać obraz hostowany w tej samej domenie co Twoja strona. Może to być dowolny obraz, nawet przezroczysty obraz o szerokości 1 piksela, ale na stronie musi znajdować się obraz. Jeśli nie chcesz, aby obraz był widoczny na stronie, możesz użyć atrybutu style tagu <img>, by umieścić go poza obszarem renderowania. Na przykład: style="position:absolute; top: -1000px;".

Oto kod aplikacji klienckiej, który obsługuje logowanie. Wywołujemy później funkcję setupMyService() z innego kodu.

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;
}

Wskazówka: zdecydowanie zalecamy podanie przycisku logowania lub innego mechanizmu przesyłania danych, aby poprosić użytkownika o ręczne rozpoczęcie procesu logowania. Jeśli zamiast tego wywołasz element google.accounts.user.login() natychmiast po jego wczytaniu, bez oczekiwania na interakcję z użytkownikiem, pierwszą rzeczą, jaką użytkownik zobaczy po otwarciu strony, będzie strona logowania Google. Jeśli użytkownik zdecyduje się nie logować, oznacza to, że nie kieruje go z powrotem na Twoją stronę. Z perspektywy tego użytkownika próbował on odwiedzić Twoją stronę, ale nie został odesłany. Może to być dla użytkowników mylące i frustrujące. W przykładowym kodzie w tym dokumencie wywołamy google.accounts.user.login() natychmiast po wczytaniu, ale dla przykładu nie zalecamy tego podejścia.

Nie musisz nic robić w przypadku zmiennej o nazwie token. Biblioteka klienta śledzi token, więc nie musisz tego robić.

Uwaga: gdy tworzysz nowy obiekt BloggerService, biblioteka klienta wywołuje metodę o nazwie google.gdata.client.init(), która sprawdza, czy przeglądarka działa. Jeśli wystąpi błąd, w bibliotece klienta pojawi się komunikat o błędzie. Jeśli chcesz samodzielnie wprowadzić taki błąd, możesz najpierw wywołać funkcję google.gdata.client.init(handleInitError), zanim utworzysz usługę (gdzie handleInitError() to Twoja funkcja). Jeśli wystąpi błąd inicjowania, funkcja otrzyma standardowy obiekt błędu. Możesz w nim wykonać dowolną czynność.

Token pozostanie ważny, dopóki go nie unieważnisz, wywołując metodę google.accounts.user.logout():

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

Jeśli nie wywołasz funkcji logout(), plik cookie zawierający token będzie działał przez 2 lata, chyba że użytkownik go usunie. Plik cookie jest przechowywany pomiędzy sesjami przeglądarki, więc użytkownik może zamknąć przeglądarkę, a następnie otworzyć ją ponownie i wrócić do klienta, na który będzie zalogowany.

W pewnych okolicznościach token może jednak stać się nieprawidłowy podczas sesji. Jeśli Blogger odrzuci token, Twój klient powinien rozwiązać warunek błędu, wywołując logout() w celu usunięcia pliku cookie zawierającego obecny token, a następnie ponownie wywołując login(), aby uzyskać nowy, prawidłowy token.

Są też 2 inne metody AuthSub, które mogą Ci się przydać w różnych kontekstach:

  • google.accounts.user.checkLogin(scope) informuje, czy przeglądarka ma obecnie token uwierzytelniania dla danego zakresu.
  • google.accounts.user.getInfo() zawiera szczegółowe informacje o bieżącym tokenie na potrzeby debugowania.

Szczegółowe informacje o używaniu JavaScriptu do interakcji z AuthSub, w tym informacje o zarządzaniu tokenami oraz w usługach checkLogin() i getInfo(), znajdziesz w dokumencie Korzystanie z uwierzytelniania &Subt;AuthSub" Authentication with Library Client Library.

Powrót do góry