2
0

Main.pas 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. unit Main;
  2. interface
  3. uses
  4. System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  5. FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Edit,
  6. FMX.Controls.Presentation, FMX.StdCtrls, OAuth.GMail, Quick.OAuth, FMX.Objects;
  7. type
  8. TForm1 = class(TForm)
  9. Label1: TLabel;
  10. efClientID: TEdit;
  11. Label2: TLabel;
  12. efSecretID: TEdit;
  13. Label3: TLabel;
  14. efCallbackURL: TEdit;
  15. Label5: TLabel;
  16. btnAuthorise: TButton;
  17. lbAccessToken: TLabel;
  18. Label6: TLabel;
  19. Label7: TLabel;
  20. btnRefresh: TButton;
  21. cbUseExisting: TCheckBox;
  22. Label4: TLabel;
  23. crcAuthorise: TCircle;
  24. crcRefresh: TCircle;
  25. cbMakeTokenExpire: TCheckBox;
  26. RoundRect1: TRoundRect;
  27. RoundRect2: TRoundRect;
  28. lbExpiration: TLabel;
  29. RoundRect3: TRoundRect;
  30. lbRefreshToken: TLabel;
  31. RoundRect4: TRoundRect;
  32. lbReloadedToken: TLabel;
  33. Label8: TLabel;
  34. procedure btnAuthoriseClick(Sender: TObject);
  35. procedure btnRefreshClick(Sender: TObject);
  36. procedure FormClose(Sender: TObject; var Action: TCloseAction);
  37. private
  38. fGMail: TOAuthGMail;
  39. fRetrieved: TDateTime;
  40. procedure SaveCredentials (const aToken: TOAuthToken);
  41. procedure LoadCredentials (var aToken: TOAuthToken);
  42. public
  43. { Public declarations }
  44. end;
  45. var
  46. Form1: TForm1;
  47. implementation
  48. uses
  49. System.DateUtils;
  50. {$R *.fmx}
  51. procedure TForm1.btnAuthoriseClick(Sender: TObject);
  52. begin
  53. crcAuthorise.Fill.Color:=TAlphaColorRec.Red;
  54. FreeAndNil(fGMail);
  55. fGMail:=TOAuthGMail.Create(efClientID.Text, efSecretID.Text);
  56. fGMail.CallbackURL:=efCallbackURL.Text;
  57. fGMail.OnSaveToken:=SaveCredentials;
  58. fGMail.OnLoadToken:=LoadCredentials;
  59. try
  60. fGMail.Authorize(procedure (const aToken: TOAuthToken)
  61. begin
  62. crcAuthorise.Fill.Color:=TAlphaColorRec.Green;
  63. end);
  64. except
  65. end;
  66. end;
  67. procedure TForm1.btnRefreshClick(Sender: TObject);
  68. begin
  69. crcRefresh.Fill.Color:=TAlphaColorRec.Red;
  70. fGMail.RefreshToken(procedure (const aToken: TOAuthToken)
  71. begin
  72. crcRefresh.Fill.Color:=TAlphaColorRec.Green;
  73. lbReloadedToken.Text:=fGMail.AccessToken;
  74. end);
  75. end;
  76. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  77. begin
  78. fGMail.Free;
  79. end;
  80. procedure TForm1.LoadCredentials(var aToken: TOAuthToken);
  81. begin
  82. if cbUseExisting.IsChecked then
  83. begin
  84. aToken.AccessToken:=lbAccessToken.Text;
  85. aToken.AccessTokenExpiration:=lbExpiration.Text.ToInteger;
  86. aToken.RefreshToken:=lbRefreshToken.Text;
  87. aToken.RetrieveDateTime:=fRetrieved;
  88. end
  89. else
  90. begin
  91. aToken.AccessToken:='';
  92. aToken.AccessTokenExpiration:=0;
  93. aToken.RefreshToken:='';
  94. aToken.RetrieveDateTime:=IncMinute(Now, -100);
  95. end;
  96. if cbMakeTokenExpire.IsChecked then
  97. aToken.RetrieveDateTime:=IncMinute(Now, -100);
  98. end;
  99. procedure TForm1.SaveCredentials(const aToken: TOAuthToken);
  100. begin
  101. lbAccessToken.Text:=aToken.AccessToken;
  102. lbExpiration.Text:=aToken.AccessTokenExpiration.ToString;
  103. lbRefreshToken.Text:=aToken.RefreshToken;
  104. fRetrieved:=aToken.RetrieveDateTime;
  105. end;
  106. end.