![]() |
Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
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:
Ich bekomme allerdings unter Delphi 11.3 einen 400 BadRequest. Wenn ich das gleiche Programm in 11.2 kompiliere läuft es einwandfrei durch.
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; LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
OA ist was? TOAuth2Authenticator?
|
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Ja genau TOAuth2Authenticator.
LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Wo wird der Wert für response_type gesetzt? Und was ist der Fehlercode (error) der mit der 400er Response geliefert wird? Z.b.;
AADSTS900561: The endpoint only accepts POST, OPTIONS requests. Received a GET request. |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Den response_type habe ich hier gar nicht definiert, hat aber bis jetzt einwandfrei funktioniert.
Ich muss morgen nochmal nach dem 400er Fehler schauen, ich habe hier nur Version 11.2 installiert. LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
![]() |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Ja bei der Anfrage für den Auth Code mache ich das auch. Ich habe eine ähnliche URL wie die auf der Seite und auch response_type=code .
Der Fehler tritt bei der Anfrage zum Access Token auf. LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
![]() |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
An der Stelle wo die Webanmeldung kommt muss es code sein, denn ich brauche einen Auth Code, den ich in einen Access_Token und einen Refresh_Token umwandeln kann.
Es kommt unter 11.3 auch kein 400er Fehler wie ich gerade gesehen habe sondern einfach die Meldung: "OAUTH2-Anmeldung ist nicht ordnungsgemäß eingerichet" . Was bedeutet das? LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Woher kommt die Meldung? Vom Microsoft Server in der response, von Delphi oder woher sonst? Und ist das die vollständige Fehlermeldung?
|
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Ja das ist die vollständige Fehlermeldung. Mehr bekomme ich im Debug auch nicht.
Das Kommt an der Stelle LRequest.Execute. Pkl
Delphi-Quellcode:
Kann sein, dass das von Microsoft kommt. Wie gesagt ich habe es gestern Abend in 11.2 versucht und da lief es einwandfrei.
LCLient.Authenticator := OA;
LClient.BaseURL := 'https://login.microsoftonline.com/07a9e2f0-5a0e-406c-a7ff-7b3ab1976b0e/oauth2/v2.0/token'; LCLient.SynchronizedEvents := false; 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; <- Hier kommt der Fehler Vorhin einfach kompiliert ohne Änderungen in 11.3 und da kam direkt der Fehler. Der AuthCode wird auch vergeben das ist nicht das Problem. Die Base URL ist ja ![]() Kann es daran liegen? LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Eigentlich nicht, da der RestClient nicht auf den Indy basiert sondern die jeweilige OS Funktionalität der Plattform nutzt.
|
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Vielleicht ein Hinweis dazu: Emba hat in 11.3 die REST-API im Zusammenspiel mit Microsoft Graph/OData kaputtgemacht (
![]() ![]() |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Ja sehr geil und ich fummel hier rum. Danke für die Info. Dann wieder zurück zu 11.2 .
Edit: Zurück auf 11.2 Probleme mit dem TMS Pack. Interner Fehler URW8074 . LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
|
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Hallo zusammen,
sollte mit dem 11.3 Patch 1 das Problem nicht eigentlich behoben sein? Also ich habe folgendes gemacht: Keine Testprogramm das mit dem obigen Code anmeldet und einen Token bekommt einmal unter Delphi 11.2 auf einer VM laufen lassen und einmal auf einer 11.3. Die 11.2 macht alles wie gewünscht, loggt ein und ich kann abfragen starten. Die 11.3 zeigt mit bei Anfrage des Tokens: Oauth2 ist nicht richtig eingerichtet . In Wirklichkeit steckt ein Bad Request dahinter, den ich als Fehler vom MS Graph API Endpoint zurück bekomme. Ich habe jetzt versucht das Verzeichnis C:\Program Files (x86)\Embarcadero\Studio\22.0\source\data\rest aus der 11.2 in die 11.3 zu kopieren (altes Verzeichnis vorher umbenannt). Leider ohne Erfolg, ich bekomme immer noch den selben Fehler. LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Hast du schon mal in QP
![]() ob das irgendwie bekannt ist? Ist zes möglich das in ein einfachstes Testprogramm zu packen und falls noch nicht gemeldet dort zusammen mit dem Testprogramm zu melden? Report Nummer hier posten, falls du's meldest, nicht vergessen! ;-) Grüße TurboMagic |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Zitat:
|
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Hallo Uwe,
Du hattest mal irgendwo geschrieben, dass man aus der 11.2 Dateien in die 11.3 kopieren kann um das Problem zu lösen. Oder war das was anderes? LG Mirko |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Hm, ich habe gerade mal mein Programm mit D11.3 Patch 1 getestet und über eine Microsoft-REST-API sowohl ein OAuth2-Token abgefragt und damit dann auch die eigentliche API genutzt. Hat alles problemlos funktioniert - der Fehler an sich in der Delphi-Bibliothek scheint mir also korrigiert zu sein (ohne mir jetzt aus Zeitgründen die Sourcen von Delphi nochmal angesehen zu haben).
Insofern wird der Fehler bei dir irgendwo anders liegen. Was Uwe meinte: du müsstest die betroffenen Bibliotheken von D11.2, die noch funktionieren, in dein Projektverzeichnis kopieren. Dann werden diese benutzt anstelle der originalen Bibliotheken von D11.3. Dazu wäre es natürlich ideal, wenn du rausfinden würdest, wo genau der Fehler in den Delphi-Bibliotheken verursacht wird, um die passende dann auszutauschen. Mich selbst macht etwas misstrauisch, dass es bei mir funktioniert. Insofern wäre es ja spannend, mal genauer zu schauen, was der Fehler ist. Im Response ist normalerweise auch bei einem Fehler 400 noch ein JSON mit weiteren Infos zum Fehler. |
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Ich habe jetzt die Dateien REST.Authenticator.OAuth.pas, REST.Authenticator.OAuth.WebForm.Win.pas und REST.Authenticator.OAuth.WebForm.Win.dfm ins Projektverzeichnis kopiert und sofort funktioniert die Token Anfrage.
|
AW: Delphi 11.3 Änderung im OAuth2 Microsoft Graph Api
Kann es sein, das das Problem mit D12 Patch1 wieder rein gekommen ist?
nachdem ich die besagten Dateien in das Projektverzeichnis kopiere ist unter D12 P1 der gleiche Fehler weg. Ich wollte noch eine Ergänzung in ![]() RSP-40757 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz