Руководство разработчика: JavaScript

API данных Blogger позволяет клиентским приложениям просматривать и обновлять контент Blogger в виде фидов API данных Google.

Ваше клиентское приложение может использовать API данных Blogger для создания новых сообщений в блогах, редактирования или удаления существующих сообщений в блогах и запроса сообщений в блогах, соответствующих определенным критериям.

В дополнение к некоторым сведениям о возможностях API данных Blogger в этом документе приводятся примеры основных взаимодействий API данных с использованием клиентской библиотеки JavaScript. Если вам интересно узнать больше о базовом протоколе, используемом библиотекой, см. раздел « Протокол» этого руководства разработчика.

Содержание

Аудитория

Этот документ предназначен для программистов, которые хотят писать клиентские приложения JavaScript, которые могут взаимодействовать с Blogger. Он предоставляет ряд примеров базовых взаимодействий API данных с использованием клиентской библиотеки JavaScript.

Справочную информацию об API данных Blogger см. в справочном руководстве по протоколу . В этом документе предполагается, что вы понимаете общие идеи, лежащие в основе протокола Google Data API, а также модель данных и поток управления, используемые клиентской библиотекой JavaScript . Также предполагается, что вы умеете программировать на JavaScript.

Справочную информацию о классах и методах, предоставляемых клиентской библиотекой, см. в справочнике по API клиентской библиотеки JavaScript .

Этот документ предназначен для чтения по порядку; каждый пример основан на более ранних примерах.

Условия эксплуатации

Вы соглашаетесь соблюдать Условия использования клиентской библиотеки JavaScript Google при использовании клиентской библиотеки JavaScript.

О поддерживаемых средах

В настоящее время мы поддерживаем только клиентские приложения JavaScript, которые запускаются на веб-странице в браузере. В настоящее время поддерживаются браузеры Firefox 1.5 и выше, а также Internet Explorer 6.0 и выше.

Клиентская библиотека JavaScript обрабатывает всю связь с сервером службы. Если вы опытный разработчик JS, вы можете подумать: «А как насчет той же политики происхождения ?» Клиентская библиотека JavaScript позволяет вашему клиенту отправлять запросы API данных Google из любого домена, сохраняя при этом соответствие модели безопасности браузера.

Начиная

Прежде чем вы сможете написать клиентское приложение JavaScript, вам нужно выполнить некоторые настройки для получения библиотеки.

Создание учетной записи блогера

Вы можете зарегистрировать учетную запись Blogger в целях тестирования. Blogger использует учетные записи Google , поэтому, если у вас уже есть учетная запись Google, все готово.

Приобретение библиотеки

Прежде чем ваш клиент сможет использовать клиентскую библиотеку, он должен запросить код клиентской библиотеки с сервера.

Начните с использования <script> в разделе <head> вашего HTML-документа, чтобы получить загрузчик Google AJAX API:

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

Чтобы получить клиентскую библиотеку Google Data API после получения загрузчика, используйте следующую строку в коде установки JavaScript, который должен вызываться из раздела <head> вашего HTML-документа (или из файла JavaScript, включенного с помощью <script> в разделе <head> вашего HTML-документа):

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

Второй параметр google.load() — это запрошенный номер версии клиентской библиотеки JavaScript. Наша схема нумерации версий создана по образцу той, что используется в Google Maps API. Вот возможные номера версий и их значение:

"1"
Предпоследняя ревизия основной версии 1.
"1.x"
Самая последняя ревизия основной версии 1.
"1.s"
Последняя стабильная версия основной версии 1. Время от времени мы будем объявлять определенную версию клиентской библиотеки «стабильной» на основании отзывов, полученных от разработчиков. Однако в этой версии могут отсутствовать последние функции.
"1.0" , "1.1 " и т.д.
Конкретная версия библиотеки с указанным основным и дополнительным номером версии.

После того, как вы вызвали google.load() , вы должны указать загрузчику дождаться завершения загрузки страницы, а затем вызвать свой код:

google.setOnLoadCallback(getMyBlogFeed);

Где getMyBlogFeed() — это функция, которую мы определим в следующем разделе этого документа. Используйте этот подход вместо того, чтобы прикреплять обработчик onload к элементу <body> .

Аутентификация в службе Blogger

Вы можете получить доступ как к общедоступным, так и к частным фидам с помощью Blogger Data API. Публичные каналы не требуют аутентификации, но доступны только для чтения. Если вы хотите изменить блоги, ваш клиент должен пройти аутентификацию, прежде чем запрашивать частные каналы.

Клиентская библиотека JavaScript использует систему аутентификации AuthSub. Дополнительные сведения об аутентификации с помощью Google Data API в целом см. в документации по аутентификации .

Аутентификация прокси-сервера AuthSub

Прокси-аутентификация AuthSub используется веб-приложениями, которым необходимо аутентифицировать своих пользователей в учетных записях Google. Оператор веб-сайта и клиентский код не имеют доступа к имени пользователя и паролю пользователя Blogger; вместо этого клиент получает специальные токены AuthSub, которые позволяют клиенту действовать от имени определенного пользователя.

Вот краткий обзор того, что происходит во время процесса аутентификации для веб-клиента JavaScript:

  1. Клиентское приложение вызывает метод google.accounts.user.login() , предоставленный клиентской библиотекой, и передает ему значение «области», указывающее, какую службу Google использовать. Для Blogger это "http://www.blogger.com/feeds/" .
  2. Клиентская библиотека отправляет браузер на страницу Google «Запрос на доступ», где пользователь может ввести свои учетные данные для входа в службу.
  3. Если пользователь успешно входит в систему, то система AuthSub отправляет браузер обратно на URL-адрес веб-клиента, передавая токен аутентификации.
  4. Клиентская библиотека JavaScript сохраняет токен в файле cookie и возвращает управление функции клиентского приложения, которая вызвала google.accounts.user.login() .
  5. Когда клиентское приложение впоследствии вызывает методы клиентской библиотеки, которые взаимодействуют с Blogger, клиентская библиотека автоматически прикрепляет токен ко всем запросам.

Примечание . Чтобы клиентская библиотека JavaScript могла выполнять аутентифицированные запросы Blogger в веб-браузере, ваша страница должна содержать изображение, размещенное в том же домене, что и ваша страница. Это может быть любое изображение, даже однопиксельное прозрачное изображение, но изображение должно быть на странице. Если вы хотите, чтобы изображение не отображалось на вашей странице, вы можете использовать атрибут style <img> , чтобы расположить изображение за пределами области рендеринга. Например: style="position:absolute; top: -1000px;"

Вот код клиентского приложения, который обрабатывает вход в систему. Позже мы вызовем функцию setupMyService() из другого кода.

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

Совет . Мы настоятельно рекомендуем вам предоставить кнопку входа или другой механизм ввода данных, чтобы пользователю было предложено запустить процесс входа вручную. Если вместо этого вы google.accounts.user.login() сразу после загрузки, не дожидаясь взаимодействия с пользователем, то первое, что увидит пользователь по прибытии на вашу страницу, — это страница входа в Google. Если пользователь решит не входить в систему, Google не направит его обратно на вашу страницу; таким образом, с точки зрения пользователя, они пытались посетить вашу страницу, но были отправлены прочь и никогда не возвращались. Этот сценарий может сбивать с толку и разочаровывать пользователей. В примере кода в этом документе мы будем вызывать google.accounts.user.login() сразу после загрузки, чтобы упростить пример, но мы не рекомендуем этот подход для реальных клиентских приложений.

Обратите внимание, что вам не нужно ничего делать с переменной с именем token ; клиентская библиотека отслеживает маркер, поэтому вам не нужно этого делать.

Примечание . Когда вы создаете новый объект BloggerService, клиентская библиотека вызывает метод с именем google.gdata.client.init() , который проверяет, поддерживается ли браузер, в котором работает клиент. В случае ошибки клиентская библиотека отображает пользователю сообщение об ошибке. Если вы хотите самостоятельно обрабатывать ошибки такого рода, вы можете явно вызвать google.gdata.client.init(handleInitError) перед созданием службы, где handleInitError() — это ваша функция. Если возникает ошибка инициализации, ваша функция получает стандартный объект Error; вы можете делать с этим объектом все, что хотите.

Токен остается действительным до тех пор, пока вы не отзовете его, вызвав google.accounts.user.logout() :

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

Если вы не вызываете logout() , то файл cookie, в котором хранится токен, сохраняется в течение двух лет, если только пользователь не удалит его. Файл cookie сохраняется между сеансами браузера, поэтому пользователь может закрыть свой браузер, а затем снова открыть его и вернуться к вашему клиенту, и они все равно будут входить в систему.

Однако существуют определенные необычные обстоятельства, при которых токен может стать недействительным во время сеанса. Если Blogger отклоняет токен, ваш клиент должен обработать состояние ошибки, вызвав logout() для удаления файла cookie, содержащего текущий токен, а затем снова вызвав login() для получения нового действительного токена.

Есть два других метода AuthSub, которые могут оказаться полезными в различных контекстах:

  • google.accounts.user.checkLogin(scope) сообщает вам, есть ли в настоящее время в браузере токен аутентификации для данной области.
  • google.accounts.user.getInfo() предоставляет подробную информацию о текущем токене для отладки.

Подробную информацию об использовании JavaScript для взаимодействия с AuthSub, включая информацию об управлении токенами и функциях checkLogin() и getInfo() , см. в документе Использование аутентификации AuthSub с помощью клиентской библиотеки JavaScript .

Вернуться к вершине