123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- unit Main;
- interface
- uses
- System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
- FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit,
- FMX.Controls.Presentation, FMX.StdCtrls, OAuth.GMail, Quick.OAuth, FMX.Objects;
- type
- TForm1 = class(TForm)
- Label1: TLabel;
- efClientID: TEdit;
- Label2: TLabel;
- efSecretID: TEdit;
- Label3: TLabel;
- efCallbackURL: TEdit;
- Label5: TLabel;
- btnAuthorise: TButton;
- lbAccessToken: TLabel;
- Label6: TLabel;
- Label7: TLabel;
- btnRefresh: TButton;
- cbUseExisting: TCheckBox;
- Label4: TLabel;
- crcAuthorise: TCircle;
- crcRefresh: TCircle;
- cbMakeTokenExpire: TCheckBox;
- RoundRect1: TRoundRect;
- RoundRect2: TRoundRect;
- lbExpiration: TLabel;
- RoundRect3: TRoundRect;
- lbRefreshToken: TLabel;
- RoundRect4: TRoundRect;
- lbReloadedToken: TLabel;
- Label8: TLabel;
- procedure btnAuthoriseClick(Sender: TObject);
- procedure btnRefreshClick(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- private
- fGMail: TOAuthGMail;
- fRetrieved: TDateTime;
- procedure SaveCredentials (const aToken: TOAuthToken);
- procedure LoadCredentials (var aToken: TOAuthToken);
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- uses
- System.DateUtils;
- {$R *.fmx}
- procedure TForm1.btnAuthoriseClick(Sender: TObject);
- begin
- crcAuthorise.Fill.Color:=TAlphaColorRec.Red;
- FreeAndNil(fGMail);
- fGMail:=TOAuthGMail.Create(efClientID.Text, efSecretID.Text);
- fGMail.CallbackURL:=efCallbackURL.Text;
- fGMail.OnSaveToken:=SaveCredentials;
- fGMail.OnLoadToken:=LoadCredentials;
- try
- fGMail.Authorize(procedure (const aToken: TOAuthToken)
- begin
- crcAuthorise.Fill.Color:=TAlphaColorRec.Green;
- end);
- except
- end;
- end;
- procedure TForm1.btnRefreshClick(Sender: TObject);
- begin
- crcRefresh.Fill.Color:=TAlphaColorRec.Red;
- fGMail.RefreshToken(procedure (const aToken: TOAuthToken)
- begin
- crcRefresh.Fill.Color:=TAlphaColorRec.Green;
- lbReloadedToken.Text:=fGMail.AccessToken;
- end);
- end;
- procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- fGMail.Free;
- end;
- procedure TForm1.LoadCredentials(var aToken: TOAuthToken);
- begin
- if cbUseExisting.IsChecked then
- begin
- aToken.AccessToken:=lbAccessToken.Text;
- aToken.AccessTokenExpiration:=lbExpiration.Text.ToInteger;
- aToken.RefreshToken:=lbRefreshToken.Text;
- aToken.RetrieveDateTime:=fRetrieved;
- end
- else
- begin
- aToken.AccessToken:='';
- aToken.AccessTokenExpiration:=0;
- aToken.RefreshToken:='';
- aToken.RetrieveDateTime:=IncMinute(Now, -100);
- end;
- if cbMakeTokenExpire.IsChecked then
- aToken.RetrieveDateTime:=IncMinute(Now, -100);
- end;
- procedure TForm1.SaveCredentials(const aToken: TOAuthToken);
- begin
- lbAccessToken.Text:=aToken.AccessToken;
- lbExpiration.Text:=aToken.AccessTokenExpiration.ToString;
- lbRefreshToken.Text:=aToken.RefreshToken;
- fRetrieved:=aToken.RetrieveDateTime;
- end;
- end.
|