4D Netkit: OAuth 2.0 Verbindungsschnittstelle anpassen

Einige von Ihnen müssen die Anzeige der Verbindungsschnittstelle während einer OAuth 2.0 Verbindung aus gestalterischen oder technischen Gründen verwalten. Ab 4D 20 R6 können Sie festlegen, dass die Verbindungsschnittstelle nicht automatisch in einem Webbrowser geöffnet wird, sondern über die authenticateURI dort angezeigt wird, wo Sie es wünschen.

In diesem Blogbeitrag wird ein Beispiel für das Öffnen der Microsoft-Anmeldeschnittstelle in einem Webbereich beschrieben.

HDI Netkit BrowserAutoOpen false

Beispiel

Im folgenden Beispiel wird gezeigt, wie man die Microsoft-Anmeldeschnittstelle in einem Webbereich öffnen kann. Dazu müssen Sie ein Formular mit einem Webbereich namens „WAConnection“ erstellen

Zunächst erstellen wir eine Methode OAuth2GetToken, um die Anzeige der Verbindungsschnittstelle im Webbereich zu verwalten und auf den Empfang des Tokens zu warten. Da diese Methode in einem Worker aufgerufen wird, verwenden wir den CALL FORM Befehl, um die Informationen im aktuellen Formular anzuzeigen:

#DECLARE($credential : Object; $CurrentWindows : Integer)

var $OAuth2:=cs.NetKit.OAuth2Provider.new($credential)

// Display the connection page in the web area "WAConnection"
CALL FORM($CurrentWindows; Formula(WA OPEN URL(*; "WAConnection"; $1)); $OAuth2.authenticateURI)

// Wait for the token and save it in the Form.token attribute
CALL FORM($CurrentWindows; Formula(Form.token:=$1); $OAuth2.getToken())

Dann müssen Sie diese Methode in einem Worker aufrufen mit browserAutoOpen Attribut auf false in den Credential-Parametern aufrufen:

var $credential:={}
$credential.name:="Microsoft"
$credential.permission:="signedIn"
$credential.clientId:="7008ebf5-xxx"
$credential.redirectURI:="http://127.0.0.1:50993/authorize/"
$credential.scope:="https://graph.microsoft.com/.default"
$credential.accessType:="offline"
$credential.prompt:="select_account"
	
// The display of the connection interface is managed by the developer.
// The browser is not automatically opened
$credential.browserAutoOpen:=False
	
// Call of the OAuth2GetToken method
CALL WORKER("OAuth2Worker"; Formula(OAuth2GetToken($1; $2)); $credential; Current form window)

Wenn Sie also Ihr Formular öffnen und den obigen Code ausführen, wird die Verbindungsschnittstelle in Ihrem Webbereich angezeigt, und der 4D Webserver wartet auf das Token:

Schlussfolgerung

Mit dieser Funktion können Entwickler das automatische Öffnen des Webbrowsers umgehen und die Kontrolle über die Darstellung der Verbindungsschnittstelle gewinnen. Diese Flexibilität ermöglicht eine besser integrierte Benutzererfahrung, die auf die spezifischen Bedürfnisse Ihrer Anwendung zugeschnitten ist.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.