Подписка

добавить на Яндекс

Наши проекты

Delphi+Google

Google API

Google API в Delphi - проект с открытым исходным кодом.

Chrono

Chrono

Хронометр - программа для ведения списка задач.

ODFProc

ODFProc

ODFProc - работа с документами OpenOffice в Lazarus и FreePascal.

Поддержка блога

А тут я коплю на лицензию Delphi XE на iPad =).
Сумма пожертвования не фиксирована.

Публикации

Год назад

Случайный пост

Последние

Сообщения форума

Комментарии

Социальные сети

Google

Facebook

Twitter

Опрос

Вы сейчас или в ближайшем обозримом будущем планируете разрабатывать кроссплатформенное приложение с использованием Firemonkey?



Loading ... Loading ...

Блоги и сообщества

Статьи по Delphi DelphiFeeds.ru - Все Delphi-блоги Рунета Сообщество умных людей VR-Online.RU Бесплатный журнал для программистов и всех, кто интересуется IT Статьи и уроки по Delphi Новостной блог о высоких технологиях
Система Orphus
Опубликовал Vlad 30 марта 2010 в 18:37.
Категории: Delphi в Web.


Сегодня немного доработал компонент для аутентификации пользователя в различны сервисах Google. В основном изменения коснулись исправления небольших недочетов в работе компонента.

Так, при смене названия приложения (свойство Source) новое название приложения присваивалось полю Service в результате чего, при повторной аутентификации могла возникнуть исключительная ситуация.
Убраны лишние модули из секции uses в результате чего компонент немного "похудел".
Все константы, используемые при анализе результата логина были вынесены в раздел const.
И наконец, переписан код, касающийся работы со свойством Service. Напомню для чего это поле использовалось.
Дело в том, что при аутентификации в любом сервисе Google необходимо указать его идентификатор (параметр service в запросе). Так, сервис "Календарь" имеет идентификатор cl, Google Analytics - analytics и т.д. Если же Вам не известно какой из сервисов запросит пользователь, то допускается использовать идентификатор xapi.
Так вот в старой версии компонента GoogleLogin поле Service представляло собой простую строку (string) и, я не исключаю такой возможности, кто-то мог занести в это поле не то, что требуется. Например, вместо cl записать celendar и т.д. Что опять же могло привести к ошибке аутентификации или просьбе ввести каптчу.
Сейчас поле Service определяется перечисляемым типом TServices, который содержит все доступные на данный момент идентификаторы сервисов, включая последние разработки Google API, такие как SiteWiki и т.д.
Также в архиве с компонентом обновлена программа демонстрирующая работу компонента.
Скачать обновленный компонент можно со страницы Downloads проекта DelphiCelendar. В общем скачивайте, устанавливайте и пользуйтесь на здоровье :).

-------------------------
Хотите заглянуть в будущее и посмотреть как мы будем жить через какие-то 20-30 лет? Смотрите - Города будущего. Сам я давненько занимаюсь экологией и что-то мне кажется, что даже за 100 лет человечеству не удастся создать экологически чистую техносферу, но время покажет.
-------------------------
Понравилась статья? Тогда:
Делись! Загружай! Плюсуй!
   Отправить PDF на   
Читай ещё статьи на WebDelphi.ru

Комментарии (10)

WP_Cloudy
  • Алексей (Минск) пишет:

    Что мы как-то не в ногу идем )))
    Я тоже начал переделывать его

  • Vlad пишет:

    Кого? Я ещё ничего не закидывал в репозиторий. Ща в группе всй распишем :)

  • deksden пишет:

    Скажите — для меня остается загадкой: что означает слово celendar? сначала думал — опечатка! Но судя по настойчивости, с которой оно используется — наверное, есть какой то смысл в этом слове. Если имелось ввиду «Календарь», то он пишется cAlendar.

  • Vlad пишет:

    Конечно есть смысл. Это как слово «матраЦ», который разрешили писать как матраС, только потому, что лингвисты запарились тыкать носом безграмотных в словарь Даля. Глядиш и calendar начнут писать как celendar :). А если серьезно, то смысл есть, более того где-то в блоге есть Synapse и Synapce и ещё парочка похожих слов и словосочетаний.

  • Gummy пишет:

    Ну народ вы прям как черепашки низя
    как к вам не зайду у вас всё Гугл Логин
    уж пора бы чёнить поинтереснее
    Ксати идея и вопрос задно
    кто встречал Java2Delphi конветрет?
    я както скачал с какогото азиатского сайта, он свой пример то перегоняет а вот чтото серьезное уже рычит

    Просто уже на C и Java есть готовые модули
    если их быстро перегнать в Delphi то я думаю продуктивность вашей работы возрастёт

  • Gummy пишет:

    Хотел написать Ниньзя а вышло
    файлик назывался
    java2delphi.20070629.zip

  • Vlad пишет:

    Java2Delphi не встречал. А по поводу «по-интереснее» так оно есть :) точнее готовится быть — надо доработать немного примеры, протестить. Другое дело, что интересно конкретно для Вас?

  • Виталий пишет:

    Народ нашел небольшой баг, если в пароле к почте есть спец символы типа «?»,то логин не проходит, фикс закодировать пассворд спомощью HtmlEncode.
     
    function GetParamStr: string;
    var
    Size: Cardinal;
    lencurl: cardinal;
    CanonicalURL: string;
    begin
    if Length(Trim(FLogintoken))>0 then //в результате прошлого запроса получена каптча
    begin
    Result:=Format(ParamStrCaptcha,[GetEnumName(TypeInfo(TAccountType),Ord(FAccountType)),
    FEmail,
    HTTPEncode(FPassword),
    GetEnumName(TypeInfo(TServices),Ord(FService)),
    FSource,
    FLoginToken,
    LoginCaptcha]);
    end
    else
    Result:=Format(ParamString,[GetEnumName(TypeInfo(TAccountType),Ord(FAccountType)),
    FEmail,
    HTTPEncode(FPassword),
    GetEnumName(TypeInfo(TServices),Ord(FService)),
    FSource]);
    end;

  • Vlad пишет:

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

  • Виталий пишет:

    Еще, вдруг кому-нибудь  понадобиться… SID, LSID
    if pos(‘SID’, UpperCase(List[i])) = 0 then
    FSID := Trim(copy(List[i], pos(‘=’, List[i]) + 1, Length(List[i]) -
    pos(‘=’, List[i])))
    else if pos(‘LSID’, UpperCase(List[i])) = 0 then
    FLSID := Trim(copy(List[i], pos(‘=’, List[i]) + 1, Length(List[i]) -
    pos(‘=’, List[i])))
    Всегда выполниться первый IF, так как  LSID включает в себя SID, fix — 0 заменить на 1

     

Ваш ответ

Внимание: Все комментарии модерируются, и это может вызвать задержку их публикации. Отправлять комментарий заново не требуется.

Пожалуйста, заключайте исходный код в тэги [code][/code].
Если код большой, то воспользуйтесь Вставкой кода на отдельной странице и оставьте в комментарии ссылку на исходник