4D Netkit: Personalização da interface de ligação OAuth 2.0

Tradução automática de Deepl

Alguns de vocês podem precisar gerenciar a exibição da interface de conexão durante uma conexão OAuth 2.0 por razões técnicas ou de design. A partir de 4D 20 R6, pode escolher não abrir automaticamente um navegador web para mostrar a interface de conexão, mas usar o authenticateURI para mostrá-la onde quiser.

Nesse post de blog, vamos mostrar um exemplo de abertura da interface de login Microsoft dentro de uma área web.

HDI Netkit BrowserAutoOpen false

Exemplo

No exemplo abaixo, veremos como abrir a interface de login da Microsoft em uma área da Web. Para tal, é necessário criar um formulário com uma área Web denominada “WAConnection”

Primeiro, vamos criar um método OAuth2GetToken para gerir a apresentação da interface de ligação na área Web e aguardar que o token seja recebido. Como este método será chamado num trabalhador, utilizamos o comando CALL FORM para mostrar a informação no formulário atual:

#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())

Em seguida, é necessário chamar este método num trabalhador com o atributo browserAutoOpen com o atributo false nos parâmetros da credencial:

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)

Então, se abrir seu formulário e executar o código acima, a interface de conexão será exibida na sua área web, e o servidor web 4D vai esperar pelo token:

Conclusão

Usando essa funcionalidade, desenvolvedores podem ignorar a abertura automática do navegador web e ganhar controle sobre a apresentação da interface de conexão. Essa flexibilidade permite uma experiência de usuário mais integrada e adaptada às necessidades específicas de sua aplicação.

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.