уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
На сегодняшний день интерфейс ClientLogin не рекомендуется использовать в API Google. Эта статья относится к архивным и не отражает современного положения дел. Для авторизации в API Google Вы можете использовать модуль для OAuth, или же, если у Вас Delphi XE5 и выше — библиотеку REST Client Library.

Вообще, озвученный в теме поста вопрос так или иначе задавался мне в разных ситуациях, разными людьми раз эдак 10 точно =). Чаще всего ответом на вопрос была страничка с документацией по интерфейсу, реже — краткий пересказ той же документации. Единственное, что я никак не мог предоставить — это пример, когда при авторизации ну никак нельзя использовать другие параметры в запросе за исключением HOSTED.

Действительно, для большинства API Google нам вполне достаточно использовать HOSTED_OR_GOOGLE или даже просто GOOGLE в параметрах URL и навскидку дать пример, когда авторизация провалится или не пройдет запрос к ресурсам API даже при верном пароле…скажем так — не просто. Однако буквально на днях я столкнулся именно с такой ситуацией — при уже пройденной авторизации API никак не желал отдать мне сведения по запросу.

Вот я и решил опубликовать небольшую заметку и привести пример, когда имеет смысл использовать параметр HOSTED. Ну, а чтобы ответ был понятен даже самому, что ни есть новичку в работе с Google API в Delphi, я постараюсь дать ответ самым подробнейшим образом. 

Итак, что нам говорит официальная документация по поводу параметров запроса в ClientLogin:

ClientLogin можно использовать в любых приложениях, которые могут выполнять HTTPS-запросы POST. Запрос POST должен быть структурирован как форма POST с кодировкой по умолчанию application/x-www-form-urlencoded. Параметры следует включать в текст запроса.
Параметр Action URL: https://www.google.com/accounts/ClientLogin

По поводу нашего «проблемного» параметра Google говорит следующее:

accountType — Тип аккаунта, для которого выполняется аутентификация. Возможные значения:

GOOGLE (выполнить аутентификацию аккаунта Google)
HOSTED (выполнить аутентификацию размещенного аккаунта)
HOSTED_OR_GOOGLE (выполнить аутентификацию размещенного аккаунта; в случае неудачи выполнить аутентификацию аккаунта Google)

Используйте значение HOSTED_OR_GOOGLE, если вы не уверены, для какого типа аккаунта потребуется выполнить аутентификацию. Если регистрационные данные пользователя соответствуют как аккаунту Google, так и размещенному аккаунту, аутентификация будет выполнена только для размещенного аккаунта.

Понимаю, что для человека, который всю свою сознательную жизнь использовал в Google только то, что предоставляется практически сразу при получении аккаунта (GMail, Goole Docs и т.д.) последние два параметра могут вызвать что-то наподобие легкого ступора. Что за «размещенный аккаунт«? Как разместить аккаунт в Google? И в чем собственно смысл таких аккаунтов? Вопросов может быть много.

Давайте разбираться. Что значит «размещенный аккаунт Google» и как создать такой аккаунт?

Дело в том, что Google помимо того, что привлекает нас с вами своими бесплатными решениями типа GMail или, как сейчас, Google Plus, также и получает неплохие такие доходы в том числе и от того, что предоставляет организациям самые разнообразные решения для управления бизнесом. Это и проекты для образования и проекты для средних и крупных фирм и т.д. Вся эта «кухня» работает на Google Apps за который, кстати сказать, Google просит не такие уж и большие деньги. В чем преимущество использования Google Apps? Вот, например, есть организация, которая проводит поисковое продвижение сайтов. Есть свой собственный домен, простенький или не очень сайт/портал. Но вот взять и создать для своих работников все 33 удовольствия такие как почта, календарь, документы и т.д. ну никак не хватает ни времени, ни денег, ни желания. И вот тут на помощь может прийти Google Apps.

Администратор заводит аккаунт, указывая в регистрационных данных свой домен, Google, в свою очередь, просит подтвердить право на домен, дабы не использовалась чужая собственность и отсеивались те, кто просто решил побаловаться. После регистрации нового аккаунта Вы получаете уже готовую почту с адресом имя@сайт.домен, но эта почта будет размещена в инфраструктуре Google. Здесь же Вы можете завести аккаунты для сотрудников организации, дав каждому свой адрес, дать доступ на управление документами и т.д. То есть с одной стороны все адреса для клиентов будут выглядеть точно также, как и в случае без Apps, но хранение всех данных, управление безопасностью и т.д. возьмет на себя Google.

Вот такие аккаунты, имеющие в адресах свой собственный домен и называются «размещенными».  Можете, кстати, попробовать использовать Google Apps — там есть тестовый бесплатный период на 30 дней.

Теперь, прочитав всё, что сказано выше, Вы уже должны хотя бы примерно представлять себе в чем смысл параметром HOSTED_OR_GOOGLE и HOSTED. Использование этих параметров необходимо, когда Вы используете платные услуги от Google.

Что касается примера, когда следует использовать параметр HOSTED, то можно привести пример с тем же GMail. Имея бесплатный почтовый аккаунт Вы можете без особых проблем отправлять и получать почту, используя Synapse или Indy, но вот взять и изменить, скажем состав меток в почте Вы никак не сможете — такие опции доступны только в GMail API Settings, использование которого доступно только бизнес-пользователям. А как узнать, что пользователь использует Google Apps? Правильно, ТОЛЬКО отправив запрос на авторизацию с параметром HOSTED внутри. Отправили и проверяем ответ: если пришел токен Auth, то всё в порядке — мы имеем дело с бизнес-пользователем, не получили токен — анализируем причину ошибки, а причин не так уж и много:

  1. Ошибка в адресе/пароле
  2. Адрес никак не связан с Google (тот же адрес admin@webdelphi.ru может быть адресом как почты на моем собственном домене, так и адресом в Google Apps)
  3. Пользователь не связан с Google Apps, т.е. пользуется бесплатной версией GMail.
А столкнулся я с такой ситуацией как раз при работе с обозначенным выше API настроек GMail. Вначале даже немного растерялся — авторизация прошла, ключик есть, запрос оформлен по всем правилам, а Google отвечает 401 кодом. В итоге пришлось проводить представленный выше анализ возможностей пользователя и перестраивать чуток работу программы.

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
5 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Александр
09/09/2011 21:33

У Google Apps бесплатный аккаунт до 5 человек вроде (без триала, работоспособный). У меня на блоге именно он и работает ( admin@gunsmoker.ru — это гугловская почта).

Александр
09/09/2011 23:10

Да у них там хитро как-то заныкано, так просто не найти. Я находил через гугл («Google Apps Free» или «Google Apps бесплатно»).

http://www.livebusiness.ru/news/8270/ — инфа

Если не путаю, это тут:
https://www.google.com/a/cpanel/standard/new — стандартный
https://www.google.com/a/cpanel/domain/new — бизнес

По крайней мере, так было год-два назад.

Александр
09/09/2011 23:12

…хотя есть ещё какой-то http://www.google.com/a/cpanel/premier/new

В общем, чёрт ногу сломит, но бесплатный вариант у них есть.