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

Уже давным давно Google использует свой собственный сервис goo.gl для сокращения ссылок с целью их последующей передачи из фида FeedBurner в Twitter. Однако до последнего времени сервис этот использовался больше для “внутреннего использования” – попала статья в фид, FeedBurner пожал ссылку, скинул в Twitter (если настроена автоотправка) и на этом всё – ссылка живет своей жизнью в Twitter.

Недавно натолкнулся в Лабораторных API на “Google URL Shortener API”. Оказывается в закутках бесчисленных лабораторий Google давно зреет коварный план по захвату и порабощению всех кто хоть как-то использует в работе короткие ссылки…Шутка конечно :) Просто Google готовит к официальному выпуску ещё один API для разработчиков. А раз есть от чего отталкиваться нам, как пользователям этого API, то почему бы не посмотреть как там все в этом API устроено?

Как и большинство сервисов сокращения ссылок, сервис goo.gl позволяет:

  • сокращать ссылки всем без исключения пользователям
  • получать статистику по кликам только зарегистрированным пользователям.

 

Для аутентификации пользователя в сервисе есть целых три способа:

  1. С использование ключа API, который можно получить в консоли разработчика. Единственная “заморочка” состоит в том, чтобы зайти в консоль получить и запомнить ключ.
  2. С использованием OAuth. Этот способ наиболее выгодно использовать тем, кто хочет использовать сервис в своих онлайн-приложениях.
  3. С использованием интерфейса ClientLogin. Этот способ, соответственно, подходит нам, как разработчикам настольных приложений.

Что касается самого процесса аутентификации в сервисах Google, то тут я уже, видимо, всем читателям проел плешь :) Постов на эти темы было достаточно, да и готовый компонент в репозитории, если что взять можно. Поэтому процесс получения токена для работы с сервисом в качестве авторизованного пользователя мы опустим и перейдем сразу к главном – процесс сокращения ссылок.

Сколько сервисов коротких ссылок пересматривал на предмет их API – везде было всё достаточно просто – скинул GET-ом или POST-ом длинную ссылку, сервис вернул короткую. Или, например, тот же Bit.ly с его “навороченным” API дополнительно возвращает ту же статистику по ссылке. У Гугла оказалось все “серьезно”.

Весь алгоритм получения короткой ссылки можно представить в виде следующих шагов:

  1. Авторизуемся в сервисе и получаем токен
  2. Вставляем токен в заголовки запроса
  3. Формируем JSON-документ, содержащий длинную ссылку и записываем документ в тело запроса
  4. Отправляем POST-запрос и получаем в ответ ещё один JSON-документ с ответом
  5. Парсим JSON в поисках короткой ссылки

Честно сказать, немного напрягли “танцы” вокруг заголовков и JSON-а. Оно, конечно, не проблема – взять тот же SuperObject и получить быстро и не принужденно адрес короткой ссылки из документа, но всё-таки хотелось бы, чтобы в будущем, после выхода из лаборатории, API получил дополнительную возможность – возвращать ссылку в виде простого plain text.

Не вникая в суть разбора ответного JSON-документа, процедуру получения короткой ссылки от Google можно представить в следующем виде:

procedure URLInsert(const LongURL: string);
const Template = '{"longUrl":"%s"}';
var Stream: TStringStream;
begin
  with THTTPSend.Create do
    begin
      if FLogged then
        Headers.Add('Authorization: GoogleLogin auth='+FAuth);//добавили токен авторизации
      try
      MimeType:='application/json'; //записали ОБЯЗАТЕЛЬНО тип данных
      Stream:=TStringStream.Create;
      Stream.WriteString(Format(Template,[LongURL]));
      Document.LoadFromStream(Stream);//записали JSON в тело запроса
      if HTTPMethod('POST','https://www.googleapis.com/urlshortener/v1/url') then
        Document.SaveToFile('Response.txt')//сохранили ответ 
      else
        ShowMessage(ResultString);
      finally
        Stream.Free;
      end;
    end;
end;

 

После выполнения процедуры в файле Response.txt будет находится ответный JSON-документ, содержащий информацию по короткой ссылке.

Если сравнивать этот API, например, с API Bit.ly, то, на мой взгляд, API Google пока далеко позади как по удобству, так и по возможностям работы. Может, конечно, разработчики из Google и “допилят”  свой API и, заодно и сам сервис, до более функционального и презентабельного вида, но, что-то мне подсказывает, что эта идея как и в случае с Google Buzz’ом окажется мягко говоря, не самой удачной и популярной. Хотя я, как любитель поковыряться во всяких гуглоапи, был бы только рад, если “Google URL Shortener API” выйдет из Лаборатории без приставки Deprecated!

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

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

А вот и новый сервис сокращения ссылок – http://xlin.ru/
Пользуйтесь на здоровье!

Максим Сысоев
Максим Сысоев
04/01/2013 21:53

а что такое FAuth в Headers.Add('Authorization: GoogleLogin auth='+FAuth);//добавили токен авторизации

Денис
Денис
18/11/2015 03:42

Я пользуюсь этим сервисом http://urlk.ru/
Стабильно работает, простой в использовании и ничего лишнего. Классная штука.