Hallo zusammen,
hat sich irgendwas in der OAuth2 Komponente in Delphi 11.3 geändert?
Ich bekomme einen Auth Code und will damit meinen Token abrufen.
Der Code wird in der Variablen FAuthCode gespeichert.
Ich verwende folgenden Code:
Delphi-Quellcode:
LClient := TRestClient.Create(OA.AccessTokenEndpoint);
try
LCLient.Authenticator := OA;
LClient.BaseURL := 'https://login.microsoftonline.com/07a9e2f0-5a0e-406c-a7ff-7b3ab1976b0e/oauth2/v2.0/token';
LRequest := TRESTRequest.Create(LClient);
LRequest.Method := TRESTRequestMethod.rmPOST;
LRequest.AddAuthParameter('client_id', OA.ClientID, TRESTRequestParameterKind.pkREQUESTBODY);
LRequest.AddAuthParameter('scope', OA.scope, TRESTRequestParameterKind.pkREQUESTBODY);
LRequest.AddAuthParameter('code', FAuthCode, TRESTRequestParameterKind.pkREQUESTBODY);
LRequest.AddAuthParameter('redirect_uri', OA.RedirectionEndpoint, TRESTRequestParameterKind.pkREQUESTBODY);
LRequest.AddAuthParameter('grant_type', 'authorization_code', TRESTRequestParameterKind.pkREQUESTBODY);
LRequest.Execute;
if LRequest.Response.GetSimpleValue('access_token', LToken) then
FAccessToken := LToken;
if LRequest.Response.GetSimpleValue('refresh_token', LToken) then
FRefreshToken := LToken;
if LRequest.Response.GetSimpleValue('token_type', LToken) then
FTokenType := OAuth2TokenTypeFromString(LToken);
if LRequest.Response.GetSimpleValue('expires_in', LToken) then
begin
LIntValue := StrToIntdef(LToken, -1);
if (LIntValue > -1) then
FAccessTokenExpiry := IncSecond(Now, LIntValue)
else
FAccessTokenExpiry := 0.0;
end;
if (FAccessToken <> '') then FAuthCode := '';
OA.AccessToken := FAccessToken;
OA.RefreshToken := FRefreshToken;
finally
LClient.DisposeOf;
end;
Ich bekomme allerdings unter Delphi 11.3 einen 400 BadRequest. Wenn ich das gleiche Programm in 11.2 kompiliere läuft es einwandfrei durch.
LG
Mirko