Guest User

Accessing the Google Tasks API via Delphi REST library

a guest
Feb 14th, 2014
444
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.96 KB | None | 0 0
  1. procedure Tfrm_Main.btn_GoogleTasks_FetchAuthTokenClick(Sender: TObject);
  2. var
  3. LURL: string;
  4. wv: Tfrm_OAuthWebForm;
  5. LToken: string;
  6. begin
  7. edt_GoogleTasks_AuthCode.Text := '';
  8. edt_GoogleTasks_AccessToken.Text := '';
  9. edt_GoogleTasks_RefreshToken.Text := '';
  10. /// step #1: get the auth-code
  11. LURL := 'https://accounts.google.com/o/oauth2/auth';
  12. LURL := LURL + '?response_type=' + URIEncode('code');
  13. LURL := LURL + '&client_id=' + URIEncode(edt_GoogleTasks_ClientID.Text);
  14. LURL := LURL + '&redirect_uri=' + URIEncode('urn:ietf:wg:oauth:2.0:oob');
  15. LURL := LURL + '&scope=' + URIEncode('https://www.googleapis.com/auth/tasks');
  16. // optional
  17. // LURL := LURL + '&login_hint=' + URIEncode('[email protected]');
  18. wv := Tfrm_OAuthWebForm.Create(self);
  19. try
  20. wv.OnTitleChanged := self.OAuth2_GoogleTasks_BrowserTitleChanged;
  21. wv.ShowModalWithURL(LURL);
  22. finally
  23. wv.Release;
  24. end;
  25. /// step #2: get the access-token
  26. ResetRESTComponentsToDefaults;
  27. RESTClient.BaseURL := 'https://accounts.google.com/';
  28. RESTRequest.Method := TRESTRequestMethod.rmPOST;
  29. RESTRequest.Resource := 'o/oauth2/token';
  30. RESTRequest.Params.AddItem('code', edt_GoogleTasks_AuthCode.Text, TRESTRequestParameterKind.pkGETorPOST);
  31. RESTRequest.Params.AddItem('client_id', edt_GoogleTasks_ClientID.Text, TRESTRequestParameterKind.pkGETorPOST);
  32. RESTRequest.Params.AddItem('client_secret', edt_GoogleTasks_ClientSecret.Text, TRESTRequestParameterKind.pkGETorPOST);
  33. RESTRequest.Params.AddItem('redirect_uri', 'urn:ietf:wg:oauth:2.0:oob', TRESTRequestParameterKind.pkGETorPOST);
  34. RESTRequest.Params.AddItem('grant_type', 'authorization_code', TRESTRequestParameterKind.pkGETorPOST);
  35. RESTRequest.Execute;
  36. if RESTRequest.Response.GetSimpleValue('access_token', LToken) then
  37. // edt_GoogleTasks_AccessToken.Text := LToken;
  38. OAuth2_GoogleTasks.AccessToken := LToken;
  39. if RESTRequest.Response.GetSimpleValue('refresh_token', LToken) then
  40. // edt_GoogleTasks_RefreshToken.Text := LToken;
  41. OAuth2_GoogleTasks.RefreshToken := LToken;
  42. end;
Add Comment
Please, Sign In to add comment