Einzelnen Beitrag anzeigen

oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#1

Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api

  Alt 22. Mär 2023, 19:31
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
  Mit Zitat antworten Zitat