Блог по программированию в среде Delphi

Поиск по блогу

Есть идея по созданию интересной программы?

Опиши тут и я по возможности постараюсь это реализовать специально для тебя! Без $ ))

пятница, 30 июля 2010 г.

Описание DemoGoogleLogin

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

Как видим вроде ни чего экстраординарного все просто и со вкусом
На форме имеем 3 кнопки, по средством которых и происходит либо авторизация пользователя, очистка памяти занимаемой компонентом (уничтожение его (после этого доступ к нему не возможен и вызовет исключительную ситуацию)) и авторизация с капчей.

 Рассмотрим авторизацию
Для того чтобы авторизироваться необходимо заполнить поля компонента email и password после чего вызвать метод класса Login после чего выполниться формирование запроса и создание потока в котором, произойдет обмен данными между нашей программой и сервером google. После чего если введенные данные для авторизации были верны произойдет событие OnAutorization так же оно может возникнуть в любом другом случае исключая случай ошибки для которого есть отдельное событие OnError и случай необходимости ввода текста с картинки(капча) у которого так же есть свое событие OnAutorizCaptcha.

Посмотрим реализацию моих слов в Delphi
procedure TForm11.Button1Click(Sender: TObject);
begin
if not Assigned(GoogleLogin1) then
begin
  ShowMessage('Уже убили');
  Exit;
end;
//почтовый ящик обязательно gmail
GoogleLogin1.Email:=EmailEdit.Text;
//пароль к нему
GoogleLogin1.Password:=PassEdit.Text;
//выбираем сервис
GoogleLogin1.Service:=TServices(ComboBox1.ItemIndex);
Memo1.Clear;//очистка лога
//запускаем процесс авторизации
GoogleLogin1.Login();
end;

Событие посредством, которого мы передаем полученные данные в результате авторизации на гугле в другие компоненты

procedure TForm11.GoogleLogin1Autorization(const LoginResult: TLoginResult;Result: TResultRec);
var
  temp:string;
begin
  ResultEdit.Text:=Result.LoginStr;
  AuthEdit.Text:=Result.Auth;
  temp:=GetEnumName(TypeInfo(TLoginResult),Integer(LoginResult));
  Edit1.Text:=temp;
  if LoginResult =lrOk then
    ShowMessage('Мы в гугле!!!!!!!!!')
  else
    ShowMessage('Мы НЕ в гугле!!!!!!!!!');
end;

В случае успешной авторизации мы увидим подобное этому


А в случае неудачной авторизации

 Так вот специально для эксперимента введем неверный пароль и выполним несколько раз авторизацию до появления капчи по текстом по ее использованию.

Должны увидеть, что-то подобное


Вводим текст в Edit находящийся ниже капчи и нажимаем на кнопку Авторизация после ввода капчи.
Обработчик нажатия этой кнопки
procedure TForm11.Button3Click(Sender: TObject);
begin
  if edtCaptcha.Text<>'' then
  begin
    imgCaptcha.Picture:=nil;
    GoogleLogin1.Email:=EmailEdit.Text;
    GoogleLogin1.Password:=PassEdit.Text;
    GoogleLogin1.Captcha:=edtCaptcha.Text;
  end;
end;
Как видите тут нет вызова GoogleLogin1.Login(); или чего нибудь подобного, а просто свойству GoogleLogin1.Captcha присваивается значение, которое автоматически производит авторизацию.
Ни чего больше писать не нужно, только передавать значение капчи и все.

В случае успешной авторизации так же произойдет событие OnAutorizCaptcha

Вроде все сказал, если, что- то не понятно пишите, постараюсь ответить всем.

2 комментария:

  1. даже с отключенным интернетом выдает 'Мы в гугле!!!!!!!!!'

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      последняя версия https://github.com/googleapi
      проверьте, возможно данная ошибка уже пофиксена

      Удалить