Ich habe mich dann mal etwas erkundigt und herausgefunden, dass es ja sowas wie eine BrowserKomponente in Delphi gibt. Jetzt zu meiner
eigentlichen Frage:
Kann man obiges auch darin umsetzen, um mehr Kontrolle über den Ablauf zu erhalten? Sowas wie ein 'warte, solange noch kein redirekt stattgefunden hat',
'lese
url', 'schließe browserfenster'? ^^
Siehe erst einmal meine Antwort hier:
https://www.delphipraxis.net/1492957-post11.html
Kurzum: Nein. Die OAuth-Spezifikation ist da extrem eindeutig und sagt: Nimm den Default-Browser des Systems. Der IDP kann (und sollte) darüber hinaus versuchen, die Nutzung von Embedded Browsern aktiv zu verhindern.
Eine andere Lösung (ggf. elegantere Lösung) wäre, dass Du für Deine Anwendung ein custom
Url-Schema registrierst. z.B.: meinProgramm://auth?code=xyz
Diese custom
url trägst Du dann im IDP ein. Hat auch den Vorteil, dass Du keinen HttpListener aufmachen musst und der redirect nicht auf eine unsichere, nicht-https-
Url geht.
Der Browser bekommt den redirect auf diese
Url, und Windows (oder Linux oder macOS oder Android oder iOS, geht ja Plattformübergreifend) ruft dann Dein Programm mit dieser
Url als Parameter auf. Die neu gestartete Instanz kann dann deiner laufenden Instanz z.B. über Shared Memory oder Named Pipes oder ähnliches eine Nachricht mit der Antwort vom IDP schicken.