Уже давным давно Google использует свой собственный сервис goo.gl для сокращения ссылок с целью их последующей передачи из фида FeedBurner в Twitter. Однако до последнего времени сервис этот использовался больше для “внутреннего использования” – попала статья в фид, FeedBurner пожал ссылку, скинул в Twitter (если настроена автоотправка) и на этом всё – ссылка живет своей жизнью в Twitter.
Недавно натолкнулся в Лабораторных API на “Google URL Shortener API”. Оказывается в закутках бесчисленных лабораторий Google давно зреет коварный план по захвату и порабощению всех кто хоть как-то использует в работе короткие ссылки…Шутка конечно :) Просто Google готовит к официальному выпуску ещё один API для разработчиков. А раз есть от чего отталкиваться нам, как пользователям этого API, то почему бы не посмотреть как там все в этом API устроено?
Как и большинство сервисов сокращения ссылок, сервис goo.gl позволяет:
- сокращать ссылки всем без исключения пользователям
- получать статистику по кликам только зарегистрированным пользователям.
Для аутентификации пользователя в сервисе есть целых три способа:
- С использование ключа API, который можно получить в консоли разработчика. Единственная “заморочка” состоит в том, чтобы зайти в консоль получить и запомнить ключ.
- С использованием OAuth. Этот способ наиболее выгодно использовать тем, кто хочет использовать сервис в своих онлайн-приложениях.
- С использованием интерфейса ClientLogin. Этот способ, соответственно, подходит нам, как разработчикам настольных приложений.
Что касается самого процесса аутентификации в сервисах Google, то тут я уже, видимо, всем читателям проел плешь :) Постов на эти темы было достаточно, да и готовый компонент в репозитории, если что взять можно. Поэтому процесс получения токена для работы с сервисом в качестве авторизованного пользователя мы опустим и перейдем сразу к главном – процесс сокращения ссылок.
Сколько сервисов коротких ссылок пересматривал на предмет их API – везде было всё достаточно просто – скинул GET-ом или POST-ом длинную ссылку, сервис вернул короткую. Или, например, тот же Bit.ly с его “навороченным” API дополнительно возвращает ту же статистику по ссылке. У Гугла оказалось все “серьезно”.
Весь алгоритм получения короткой ссылки можно представить в виде следующих шагов:
- Авторизуемся в сервисе и получаем токен
- Вставляем токен в заголовки запроса
- Формируем JSON-документ, содержащий длинную ссылку и записываем документ в тело запроса
- Отправляем POST-запрос и получаем в ответ ещё один JSON-документ с ответом
- Парсим 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 и др.
|
А вот и новый сервис сокращения ссылок – http://xlin.ru/
Пользуйтесь на здоровье!
а что такое FAuth в
Headers.Add('Authorization: GoogleLogin auth='+FAuth);//добавили токен авторизации
Я пользуюсь этим сервисом http://urlk.ru/
Стабильно работает, простой в использовании и ничего лишнего. Классная штука.