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

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

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

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

Содержание

Аудитория

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

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

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

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

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

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

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

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

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

Начиная

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

Создание учетной записи Blogger

Возможно, вы захотите зарегистрировать учетную запись 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. Наша схема нумерации версий создана по образцу той, которая используется API Google Maps. Вот возможные номера версий и их значение:

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

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

google.setOnLoadCallback(getMyBlogFeed);

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

Аутентификация в сервисе Blogger

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

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

Аутентификация прокси-сервера 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 .

Вернуться наверх