Przewodnik dla programistów: JavaScript

Interfejs Blogger Data API umożliwia aplikacjom klienckim wyświetlanie i aktualizowanie treści Bloggera w postaci plików danych Google Data API.

Za pomocą interfejsu Blogger Data API aplikacja klienta może tworzyć nowe posty na blogu, edytować i usuwać istniejące posty oraz wysyłać zapytania o posty spełniające określone kryteria.

Ten dokument zawiera informacje o możliwościach interfejsu Data API w Bloggerze oraz przykłady podstawowych interakcji z interfejsem Data API przy użyciu biblioteki klienta JavaScript. Jeśli chcesz dowiedzieć się więcej o podstawowym protokole używanym przez bibliotekę, zapoznaj się z sekcją dotyczącą protokołu w tym przewodniku dla deweloperów.

Spis treści

Odbiorcy

Ten dokument jest przeznaczony dla programistów, którzy chcą pisać aplikacje klienckie JavaScript, które mogą wchodzić w interakcje z Bloggerem. Znajdziesz w nim kilka przykładów podstawowych interakcji z interfejsem Data API przy użyciu biblioteki klienta JavaScript.

Informacje referencyjne interfejsu Blogger Data API znajdziesz w przewodniku po protokole. W tym dokumencie zakładamy, że znasz ogólne założenia protokołu interfejsów Google Data API oraz model danych i przepływ danych używane przez bibliotekę klienta JavaScript. Zakładamy też, że umiesz programować w języku JavaScript.

Informacje referencyjne o klasach i metodach biblioteki klienta znajdziesz w dokumentacji interfejsu API biblioteki klienta JavaScript.

Ten dokument należy czytać w kolejności, ponieważ każdy przykład opiera się na poprzednich.

Warunki korzystania z usługi

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

Obsługiwane środowiska

Obecnie obsługujemy tylko aplikacje klienckie JavaScript, które działają na stronie internetowej w przeglądarce. Obecnie obsługiwane są przeglądarki Firefox w wersji 1.5 lub nowszej oraz Internet Explorer w wersji 6.0 lub nowszej.

Biblioteka klienta JavaScript obsługuje całą komunikację z serwerem usługi. Jeśli jesteś doświadczonym deweloperem JS, możesz się zastanawiać, co z zasadami dotyczącymi tego samego źródła. Biblioteka klienta JavaScript umożliwia klientowi wysyłanie żądań do interfejsu Google Data API z dowolnej domeny przy zachowaniu zgodności z modelem zabezpieczeń przeglądarki.

Pierwsze kroki

Zanim napiszesz aplikację kliencką JavaScript, musisz przeprowadzić konfigurację, aby pobrać bibliotekę.

Tworzenie konta w Bloggerze

Możesz założyć konto Blogger na potrzeby testowania. Blogger korzysta z kont Google, więc jeśli masz już konto Google, nie musisz nic więcej robić.

Pobieranie biblioteki

Zanim klient będzie mógł korzystać z biblioteki klienta, musi poprosić o kod biblioteki klienta z serwera.

Najpierw użyj tagu <script> w sekcji <head> dokumentu HTML, aby pobrać ładowarkę interfejsu API AJAX Google:

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

Aby pobrać bibliotekę klienta interfejsu Google Data API po pobraniu programu ładującego, użyj tego wiersza w kodzie konfiguracyjnym JavaScriptu, który musi być wywoływany z sekcji <head> dokumentu HTML (lub z pliku JavaScript, który jest uwzględniany za pomocą znacznika <script> w sekcji <head> dokumentu HTML):

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

Drugi parametr google.load() to żądana wersja biblioteki klienta JavaScript.  Nazwy wersji są oparte na schemacie używanym przez interfejs Mapy Google API. Oto możliwe numery wersji i ich znaczenie:

"1"
Przedostatnia wersja główna 1.
"1.x"
Najnowsza wersja główna 1.
"1.s"
Najnowsza stabilna wersja główna 1. Czasami na podstawie opinii programistów będziemy ogłaszać, że dana wersja biblioteki klienta jest „stabilna”. Ta wersja może jednak nie zawierać najnowszych funkcji.
"1.0", "1.1" itp.
Konkretna wersja biblioteki z określonym numerem wersji głównej i podrzędnej.

Po wywołaniu funkcji google.load() musisz zlecić ładowarce, aby zaczekała, aż strona się załaduje, a potem wywołać kod:

google.setOnLoadCallback(getMyBlogFeed);

Gdzie getMyBlogFeed() jest funkcją zdefiniowaną w późniejszej sekcji tego dokumentu. Stosuj tę metodę zamiast stosowania elementu onload do obsługi elementu <body>.

Uwierzytelnianie w usłudze Blogger

Za pomocą interfejsu Blogger Data API możesz uzyskać dostęp do plików danych publicznych i prywatnych. Publiczne kanały nie wymagają uwierzytelniania, ale są tylko do odczytu. Jeśli chcesz zmodyfikować blogi, Twój klient musi się uwierzytelnić, zanim poprosi o pliki danych prywatnych.

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

Uwierzytelnianie proxy AuthSub

Uwierzytelnianie 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 uzyskuje specjalne tokeny AuthSub, które umożliwiają mu działanie w imieniu konkretnego użytkownika.

Oto krótkie omówienie tego, co dzieje się podczas procesu uwierzytelniania w przypadku klienta JavaScript na stronie internetowej:

  1. Aplikacja klienta wywołuje metodę google.accounts.user.login() udostępnioną przez bibliotekę klienta, przekazując jej wartość „scope”, która wskazuje, której usługi Google użyć. W przypadku Bloggera zakres to: "http://www.blogger.com/feeds/".
  2. Biblioteka klienta wysyła przeglądarkę na stronę „Prośba o dostęp” w Google, na której użytkownik może podać swoje dane logowania, aby zalogować się w usłudze.
  3. Jeśli użytkownik zaloguje się pomyślnie, system AuthSub prześle przeglądarkę z powrotem do adresu URL klienta internetowego, przekazując token uwierzytelniający.
  4. Biblioteka klienta JavaScript zapisuje token w pliku cookie i zwraca kontrolę do funkcji aplikacji klienta, która wywołała funkcję google.accounts.user.login().
  5. Gdy aplikacja klienta wywołuje metody biblioteki klienta, które współpracują z Bloggerem, biblioteka klienta automatycznie dołącza token do wszystkich żądań.

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

Oto kod aplikacji klienckiej, który obsługuje logowanie. Funkcję setupMyService() wywołamy później 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 umieszczenie przycisku logowania lub innego mechanizmu wprowadzania danych przez użytkownika, aby zachęcić go do rozpoczęcia procesu logowania ręcznego. Jeśli zamiast tego wywołasz funkcję google.accounts.user.login() natychmiast po załadowaniu, bez oczekiwania na interakcję użytkownika, pierwszą rzeczą, którą zobaczy użytkownik, będzie strona logowania w Google. Jeśli użytkownik zdecyduje się nie logować, Google nie przekieruje go z powrotem na Twoją stronę. Z punktu widzenia użytkownika oznacza to, że próbował on otworzyć Twoją stronę, ale został odpięty i nigdy nie został przekierowany z powrotem. Taki scenariusz może być dla użytkowników mylący i frustrujący. W przykładowym kodzie w tym dokumencie funkcję google.accounts.user.login() wywołujemy natychmiast po załadowaniu, aby przykład był prostszy, ale nie zalecamy takiego podejścia w przypadku rzeczywistych aplikacji klienckich.

Pamiętaj, że nie musisz nic robić z wartością o nazwie token. Biblioteka klienta śledzi token, więc nie musisz tego robić.

Uwaga: gdy tworzysz nowy obiekt BloggerService, biblioteka klienta wywołuje metodę google.gdata.client.init(), która sprawdza, czy przeglądarka, w której działa klient, jest obsługiwana. W przypadku błędu biblioteka klienta wyświetla użytkownikowi komunikat o błędzie. Jeśli chcesz samodzielnie obsługiwać tego typu błędy, możesz przed utworzeniem usługi wywołać funkcję google.gdata.client.init(handleInitError), gdzie handleInitError() to Twoja funkcja. Jeśli wystąpi błąd inicjalizowania, funkcja otrzyma standardowy obiekt Error. Możesz z nim zrobić, co tylko chcesz.

Token pozostaje ważny, dopóki nie cofniesz go, wywołując:google.accounts.user.logout()

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

Jeśli nie wywołasz funkcji logout(), plik cookie przechowujący token jest aktywny przez 2 lata, chyba że użytkownik go usunie. Plik cookie jest przechowywany w sesjach przeglądarki, więc użytkownik może zamknąć przeglądarkę, otworzyć ją ponownie i wrócić do klienta, a nadal będzie zalogowany.

W niektórych nietypowych sytuacjach token może jednak stać się nieważny w trakcie sesji. Jeśli Blogger odrzuci token, Twój klient powinien obsłużyć błąd, wywołując funkcję logout(), aby usunąć plik cookie zawierający bieżący token, a następnie ponownie wywołać funkcję login(), aby uzyskać nowy, prawidłowy token.

Istnieją 2 inne metody AuthSub, które mogą okazać się przydatne 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, które można wykorzystać do debugowania.

Szczegółowe informacje o używaniu JavaScriptu do interakcji z AuthSub, w tym informacje o zarządzaniu tokenami oraz o funkcjach checkLogin()getInfo(), znajdziesz w dokumencie Używanie uwierzytelniania „AuthSub” z biblioteką klienta JavaScript.

Powrót do góry