Nesta seção, você encontrará como informações redirecionar um usuário em suas aplicações na experiência do by Unico
O campo userRedirectUrl é usado para direcionar o usuário. Esse campo é recebido na resposta de sucesso da criação do processo ao realizar a requisição CreateProcess.
Aqui você encontrará as 3 formas de gerenciar a experiência do usuário em suas aplicações:
(1) Usando Redirect:
Recomenda-se seguir os seguintes passos:
Em seu fluxo comum (que está inserido o Cadastro by Unico) você irá redirecionar o cliente para o link gerado através da API;
Após isso o cliente de dentro da plataforma realiza os procedimentos necessários para continuar o fluxo;
Quando concluído, ele é redirecionado para a sua página (utilizando o redirectUrl passado na criação do processo).
(2) Usando window.open():
A opção window.open() consiste em abrir uma nova aba do navegador do usuário para que ele possa completar o processo. Ao final essa aba é fechada e redirecionada para sua aplicação.
Para isso é recomendado:
Seguir a documentação pública sobre isso, que se encontra aqui;
Monitorar se houve alteração de URL (para a redirectUrl) e então fechar a aba utilizando window.close().
Passo 1: Usando CustomTabs para integração
1 - Insira no app/build.gradle a dependência necessária para o uso de CustomTabs:
implementation("androidx.browser:browser:1.5.0")
Passo 2: Abrindo uma CustomTab
importandroid.net.Uriimport androidx.activity.ComponentActivityimport androidx.browser.customtabs.CustomTabsClientimport androidx.browser.customtabs.CustomTabsIntentclass CustomTabActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) openCustomTab(<URL_CBU>) } fun openCustomTab(url: String) { val builder = CustomTabsIntent.Builder() val customTabsIntent = builder.build() customTabsIntent.launchUrl(this, Uri.parse(url)) }}
Passo 3: Modificando AndroidManifest
Coloque no AndroidManifest.xml as permissões e intents necessários na Activity que deseja receber a callback_uri.
É necessário incluir o atributo android:launchMode="singleTop" como também a tag<data> informando os dados da URI.
<uses-feature android:name="android.hardware.camera" android:required="false"/><uses-permission android:name="android.permission.CAMERA"/>// necessário ter as permissões de câmera e geolocalização <activity android:name=".CustomTabActivity" android:exported="true" android:label="@string/app_name" android:theme="@style/Theme.Customtabs" android:launchMode="singleTop"><intent-filter android:label="Custom Tab"><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEFAULT"/><category android:name="android.intent.category.BROWSABLE"/><!-- scheme e host são os dados fornecidos na criação de um processo no campo callback_uri callback_uri:"foobar://success?code=1234"--><data android:scheme="foobar" android:host="success"/></intent-filter></activity>
As seguintes permissões são necessárias para funcionar corretamente:
Câmera;
Geolocalização.
Passo 4: Pegando informações de retorno
Para pegar as informações de redirect com os dados fornecidos, você pode usar o seguinte código no método onNewIntent da sua Activity:
override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) val url =intent.data val scheme =url.scheme// "foobar" val host =url.host// "success" val code =url.getQueryParameter("code") // "1234"}
Passo 1: Criar o controlador de autenticação
1 - O primeiro passo é criar o controlador de autenticação, e, para isso crie uma classe chamada UnicoAuthenticationController (ou como preferir chamar).
2 - Na sequência, importe o framework AuthenticationServices no topo da classe.
3 - Declare a classe como NSObject e implemente o protocolo ASWebAuthenticationPresentationContextProviding.
1 - Abra o arquivo onde você executa a autenticação e adicione as importações necessárias (como exemplo, o ContentView.swift é usado).
importSwiftUIimportAuthenticationServices
2 - Para controlar o estado do fluxo é preciso criar a propriedade @State.
@Stateprivatevar finished =false
3 - Crie uma instância da classe UnicoAuthenticationController fora do corpo da estrutura ContentView.
let unicoController =UnicoAuthenticationController()
4 - Para a validação do processo, crie uma função chamada redirectUser.
funcredirectUser() {guardlet url =URL(string:"URL_AUTHENTICATION")else { return }var session: ASWebAuthenticationSession? session =ASWebAuthenticationSession(url: url, callbackURLScheme:"BUNDLE") { callbackURL, error inguard callbackURL !=nilelse {iflet error = error {returnprint("Erro durante o processo: \(error.localizedDescription)") }return }// Processa o URL de callback para verificar se o processo foi finalizado session?.cancel() finished =true } session?.presentationContextProvider = unicoController session?.prefersEphemeralWebBrowserSession =true session?.start() }
Ambientes:
Lembre-se de alterar a url URL_AUTHENTICATION para a URL de autenticação recebida em seu processo e também o callbackURLSchemeBUNDLE para o redirect informado na criação do processo (o uso do Bundle Identifier de seu aplicativo é recomendado).
Autenticação única:
É importante setar prefersEphemeralWebBrowserSession para true para garantir uma autenticação única por processo.
Nosso suporte é restrito a aplicativos desenvolvidos diretamente nas plataformas nativas Android e iOS, utilizando seus respectivos módulos nativos. No momento, não oferecemos suporte para aplicativos desenvolvidos em frameworks híbridos, como React Native, Ionic ou outras tecnologias de desenvolvimento multiplataforma.