1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
procedure TForm1.Button2Click(Sender: TObject);
var
Source: TStringStream;
ReponseContent: TStringStream;
ClientID, ClientSecret, Token, RedirectUri, Scope: string;
begin
Memo1.Lines.Clear;
ClientID := 'monclientId';
ClientSecret:= 'monsecretestbiengarde';
RedirectUri := 'https://AdresseDemonSitePerso.fr';
Scope := 'openid';
RESTClient.BaseURL := 'https://wallet.bas.psc.esante.gouv.fr/';
try
RESTRequest.Method := TRESTRequestMethod.rmPOST;
RESTRequest.Resource := 'auth/realms/esante-wallet/protocol/openid-connect/token';
RESTRequest.Params.AddItem('grant_type', 'client_credentials', TRESTRequestParameterKind.pkGETorPOST);
RESTRequest.Params.AddItem('response_type', 'token', TRESTRequestParameterKind.pkGETorPOST);
RESTRequest.Params.AddItem('client_id', ClientID, TRESTRequestParameterKind.pkGETorPOST);
RESTRequest.Params.AddItem('client_secret', ClientSecret, TRESTRequestParameterKind.pkGETorPOST);
RESTRequest.AddParameter('redirect_uri', RedirectUri, TRESTRequestParameterKind.pkGETorPOST);
RESTRequest.Params.AddItem('scope', Scope, TRESTRequestParameterKind.pkGETorPOST);
RESTRequest.Execute;
if RESTRequest.Response.StatusCode = 200 then
begin
if RESTRequest.Response.GetSimpleValue('access_token', Token) then
begin
Memo1.Lines.add('access_token');
Memo1.Lines.add(Token);
end;
end
else
begin
Memo1.Lines.add(Format('HTTP Response : %s (%d)', [RESTRequest.Response.StatusText, RESTRequest.Response.StatusCode]));
Memo1.Lines.add(RESTRequest.Response.Content);
end;
except
on E: Exception do
Memo1.Lines.add('General Error ' + E.Message);
on EHTTP: EHTTPProtocolException do
Memo1.Lines.add('HTTP Error ' + EHTTP.Message);
on EREST: ERESTException do
Memo1.Lines.add('REST Error ' + EREST.Message);
end;
end; |
Partager