Для того, чтобы понять принцип работы компонента и получить желаемый результат мы как и все уважающие других программистов и их время сделали 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
Вроде все сказал, если, что- то не понятно пишите, постараюсь ответить всем.
даже с отключенным интернетом выдает 'Мы в гугле!!!!!!!!!'
ОтветитьУдалитьДобрый день!
Удалитьпоследняя версия https://github.com/googleapi
проверьте, возможно данная ошибка уже пофиксена