![]() |
Mirosoft Graph Api Auth Code
Hallo zusammen,
ich habe folgenden Code der bei der MS Graph Api eine Anfrage bezüglich eines AuthCodes ausführen soll. OA ist ein TOAuth2Authenticator den ich auf die Form gezogen habe.
Code:
Um zu sehen was ich zurück bekomme, habe ich das Ergebnis der Anfrage mal in in Memo Feld schreiben lassen.LClient := TRestClient.Create(OA.AuthorizationEndpoint); try LClient.BaseURL := 'https://login.microsoftonline.com/07a9e2f0-5a0e-406c-a7ff-7b3ab1976b0e/oauth2/v2.0/authorize'; LRequest := TRESTRequest.Create(LClient); LResponse := TRESTResponse.Create(LClient); LRequest.Response := LResponse; LRequest.Method := TRESTRequestMethod.rmPOST; LRequest.AddAuthParameter('client_id', OA.ClientID, TRESTRequestParameterKind.pkGETorPOST); LRequest.AddAuthParameter('redirect_uri', OA.RedirectionEndpoint, TRESTRequestParameterKind.pkGETorPOST); LRequest.AddAuthParameter('response_type', 'code', TRESTRequestParameterKind.pkGETorPOST); LRequest.AddAuthParameter('response_mode', 'query', TRESTRequestParameterKind.pkGETorPOST); LRequest.AddAuthParameter('scope', OA.Scope, TRESTRequestParameterKind.pkGETorPOST); LRequest.Execute; memo1.Lines.Text := LRequest.Response.Content; finally LClient.DisposeOf; end; Ich erhalte also den HTML Code der Login Seite von Microsoft. Eigentlich müsste ich die aber im Browser öffnen (bevorzugt in edge). Edge öffne ich derzeit so:
Code:
Weiß jemand, wie ich das anstellen kann?
ShellExecute(Application.Handle, 'open', PChar('cmd.exe'), PChar('/c "start microsoft-edge:http://www.google.de"'), nil, SW_SHOWNORMAL);
LG Mirko |
AW: Mirosoft Graph Api Auth Code
Wenn du die Authorization-Daten brauchst, musst du das dann nicht innerhalb deines Programms
(z.B. im TWebBrowser) öffnen? Ich meine TMS hat da in deren Cloud-Pack auch ein extra Login-Fenster worüber die die Credentials austauschen. MfG Incocnito |
AW: Mirosoft Graph Api Auth Code
|
AW: Mirosoft Graph Api Auth Code
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für den Input.
Wenn ich das über dieses Interface (siehe Anhang) mache öffnet er den Browser selbstständig. Aber das kann ich zur Laufzeit nicht verwenden oder? LG Mirko |
AW: Mirosoft Graph Api Auth Code
Okay ich weiß wie ich an den AuthCode komme. Die RedirectURI von MS gibt den direkt zurück, ich kann ihn auslesen und damit einen dementsprechenden Token bekommen.
Über den TWebbrowser geht das ganze auch. Ich baue mir also folgenden URL String zusammen:
Code:
Wie gesagt im TWebbrowser geht das, wenn ich allerdings den Edge öffnen lassen will:
UrlStr := 'https://login.microsoftonline.com/{meine tenant id}/oauth2/v2.0/authorize' +
'?client_id={meine client id}' + '&response_type=code' + '&redirect_uri={meine redirect uri}' + '&response_mode=query' + '&scope=User.Read offline_access' + '&state=2020';
Code:
Schneidet er den URL String beim ersten & Zeichen ab.
ShellExecute(Application.Handle, 'open', PChar('cmd.exe'), PChar('/c "start microsoft-edge:' + URLStr + '"'), nil, SW_SHOWNORMAL); //Open link in browser
Weiß jemand woran das liegt? Den korrekten String in ein Memo geschrieben und dann per Copy/Paste in die Adresszeile des Edge und es läuft einwandfrei. Ich möchte gerne den Edge verwenden, weil der mich fragt, ob ich angemeldet bleiben möchte, was der TWebbrowser nicht macht. LG Mirko |
AW: Mirosoft Graph Api Auth Code
Zitat:
|
AW: Mirosoft Graph Api Auth Code
Okay ist erledigt.
Das Problem ist das das "&" Zeichen in der cmd.exe Konsole escaped werden muss. Korrekt ist damit: UrlStr := 'https://login.microsoftonline.com/{meine tenant id}/oauth2/v2.0/authorize' + '?client_id={meine client id}' + '^&response_type=code' + '^&redirect_uri={meine redirect uri}' + '^&response_mode=query' + '^&scope=User.Read offline_access' + '^&state=2020'; |
AW: Mirosoft Graph Api Auth Code
Hilft es wenn Du aus & ein && machst ?
|
AW: Mirosoft Graph Api Auth Code
Nein das Problem ist, das ich Edge ja als Parameter der cmd.exe starte und die Windows Konsole das & Zeichen und alles was danach folgt ignoriert.
her muss das & mit ^ escaped werden. Dann geht's. LG Mirko |
AW: Mirosoft Graph Api Auth Code
Wieso schreibst du deine Antwort nicht einfach in eine Textdatei mit der Endung .htm (oder .html) un öffnest dann diese per Shellexecute?
ShellExecute(Application.Handle, 'open', PChar('ResponseHtmlDatei.htm'), nil, nil, SW_SHOWNORMAL); Das öffnet dir den Default Browser mit der HTML-Datei. |
AW: Mirosoft Graph Api Auth Code
oder Edge direkt, ohne CMD, dann ist das mit dem & | > < egal (wenn es unbedingt Edge sein muß)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 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