Guia de uso e integração
Apresenta as informações necessárias para uso e integração do SDK Oiti em seus aplicativos Android.
Siga as instruções detalhadas e aproveite os recursos avançados oferecidos por esta ferramenta para melhorar a segurança e a precisão da autenticação biométrica e verificação de documentos.
Appkey em fluxos com Liveness 2D/3D + Documentoscopia
Cada appkey está associada a uma transação específica ou tem um prazo de expiração definido. Em fluxos que tenham apenas Liveness, a appkey não deve ser reutilizada.
Exceção: para os fluxos de trabalho que incluem Liveness 2D ou 3D e têm a Documentoscopia como próxima etapa, a appkey será reutilizada para realizar a análise do documento.
Liveness 3D
Passo 1: configuração do Liveness3DUser()
Liveness3DUser()
Crie um objeto do tipo Liveness3DUser
.
Para esse objeto deve ser passada uma nova appkey para cada uso do Liveness 3D.
data class Liveness3DUser(
val appKey: String,
val environment: ENVIRONMENT3D? = ENVIRONMENT3D.HML,
val liveness3DTheme: Liveness3DTheme? = null
) : Serializable
enum class ENVIRONMENT3D {
HML,
PRD,
}
Liveness3DUser liveness3DUser = new Liveness3DUser(appKey, ENVIRONMENT3D.HML, null);
Intent intent = new Intent(getCurrentActivity(), Liveness3DActivity.class);
intent.putExtra(Liveness3DActivity.PARAM_LIVENESS3D_USER, liveness3DUser);
Descrição dos parâmetros
parâmetro | descrição |
---|---|
appKey | chave gerada para execução do liveness; |
environment | ambiente que será executado o SDK, o default é HML; |
liveness3DTheme | objeto utilizado para customizar os elementos visuais no liveness. |
Passo 2: configuração do Liveness3DActivity
Liveness3DActivity
Instancie um Intent para a classe Liveness3DActivity
, com os seguintes extras:
- Liveness3DActivity.PARAM_LIVENESS3D_USER: objeto do tipo
Liveness3DUser
, criado no passo anterior. - Liveness3DActivity.PARAM_DEBUG_ON (opcional): booleano para ajudar a depurar. Faz com que mensagens de log sejam exibidas na tela através de
Toasts
.
private fun startLiveness3D() {
val liveness3DUser = Liveness3DUser(
appKey = appKey,
ENVIRONMENT3D.HML
)
startActivityForResult?.launch(Intent(this, Liveness3DActivity::class.java).apply{
putExtra(Liveness3DActivity.PARAM_LIVENESS3D_USER, liveness3DUser)
putExtra(Liveness3DActivity.PARAM_DEBUG_ON, true)
})
}
Solução alternativa para realizar a chamada do Liveness3DActivity
Liveness3DActivity
Caso esteja utilizando uma versão mais antiga do kotlin
, também existe a possibilidade de realizar a chamada passando um Intent
e esperando o retorno pelo ActivityForResult
.
fun onLiveness3DClick(view: View) {
val liveness3DUser = Liveness3DUser(
appKey = appKey,
ENVIRONMENT3D.HML
)
val intent = Intent(this, Liveness3DActivity::class.java).apply {
putExtra(Liveness3DActivity.PARAM_LIVENESS3D_USER, liveness3DUser)
putExtra(Liveness3DActivity.PARAM_DEBUG_ON, true)
}
startActivityForResult(intent, LIVENESS3D_RESULT_REQUEST)
}
Passo 3: chamada para vínculo do activity
Chame sua função destartLiveness3D
no momento que desejar iniciar o fluxo do liveness 3D:
startLiveness3D()
Passo 4: tratamento do retorno SDK
Para tratar o retorno do SDK utilizamos do método registerActivity
.
Caso o desafio seja concluído com sucesso o resultCode será RESULT_OK
e para casos de erro será RESULT_CANCELLED
.
private fun registerActivity() {
startActivityForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
result: ActivityResult ->
when (result.resultCode) {
Activity.RESULT_OK-> onLiveness3DResultOk(result)
Activity.RESULT_CANCELED-> onLiveness3DResultCancelled(result)
}
}
}
Tratamento para capturar o valor retornado do método utilizando intent
Trata-se do exemplo para capturar o retorno do Intent
sem utilizar o método de contratos para realizar a chamada:
- LIVENESS3DRESULT_REQUEST:
Enum
contendo apenas um identificador para capturar caso aja mais de um retorno noActivityForResult
, criado no passo anterior.
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
LIVENESS3D_RESULT_REQUEST -> {
when (resultCode) {
Activity.RESULT_OK -> onLiveness3DResultOk(result)
Activity.RESULT_CANCELED -> onLiveness3DResultCancelled(result)
}
}
}
}
}
Saiba mais!
Acesse a documentação de Guia de tratamento de retorno Android.
Liveness 2D e DocCore
Uso do termo Liveness 2D
Nesta seção, compreende-se por Liveness 2D o módulo FaceCaptcha dentro do SDK.
Passo 1: configuração de DocumentscopyActivity
Para realizar a chamada do liveness2D
e documentsCopy
podemos realizar um método semelhante ao Liveness 3D segue um exemplo utilizando do startActivityForResult
Realizando a chamada do DocumentscopyActivity
DocumentscopyActivity
fun onDocumentscopyClick() {
val intent = Intent(this, DocumentscopyActivity::class.java).apply{
putExtra(DocumentscopyActivity.PARAM_ENDPOINT, ENDPOINT)
putExtra(DocumentscopyActivity.PARAM_APP_KEY, appKey)
putExtra(DocumentscopyActivity.PARAM_DEBUG_ON, false)
}
startActivityForResult(intent, DOCUMENTSCOPY_RESULT_REQUEST)
}
Descrição dos parâmetros
parâmetro | descrição |
---|---|
PARAM_ENDPOINT | endpoint fornecido pelo usuário para definir em qual ambiente irá acessar em prod ou debug ; |
PARAM_APP_KEY | Appkey que é utilizada nos demais fluxos; |
Liveness3DActivity.PARAM_DEBUG_ON (opcional) | booleano para depurar. Faz com que mensagens de log sejam exibidas na tela através de Toasts ; |
DOCUMENTSCOPY_RESULT_REQUEST | Enum para controle da chamada no retorno do startActivityForResult . |
Realizando a chamada do Liveness2D (FaceCaptchaActivity
)
FaceCaptchaActivity
)fun onStartChallengeClick(view: View) {
val userData = UserData(
user = "JoeDoe",
nome = "John Doe" ,
cpf = "999.999.999-99",
nascimento = "31/02/1871",
pass = "*******",
appKey = APPKEY
)
val intent = Intent(this, FaceCaptchaActivity::class.java).apply{
putExtra(FaceCaptchaActivity.PARAM_ENDPOINT, ENDPOINT)
putExtra(FaceCaptchaActivity.PARAM_USER_DATA, userData)
putExtra(FaceCaptchaActivity.PARAM_DEBUG_ON, false)
}
startActivityForResult(intent, CAPTCHA_RESULT_REQUEST)
}
Descrição dos parâmetros
parâmetro | |
---|---|
appKey | Chave gerada para execução do liveness; |
userData | Objeto necessário passando os dados necessários para execução do liveness fornecidos pela empresa contratante; |
PARAMENDPOINT | Endpoint fornecido pelo usuário para definir em qual ambiente irá acessar em prod ou debug ; |
Liveness3DActivity.PARAM_DEBUG_ON (opcional) | booleano para ajudar a depurar. Faz com que mensagens de log sejam exibidas na tela através de Toasts |
Passo 2: tratamento do retorno SDK
Para tratar o retorno do SDK utilizamos do método onActivityResult
.
Caso o desafio seja concluído com sucesso o ResultCode será RESULT_OK
e para casos de erro será RESULT_CANCELLED.
Aqui tratamos o retorno com base em um enum (requestCode
) para identificar qual dos serviços foi retornado se foi o liveness 2D (CAPTCHA_RESULT_REQUEST
) ou Documentscopy (DOCUMENTSCOPY_RESULT_REQUEST
).
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
CAPTCHA_RESULT_REQUEST -> {
when (resultCode) {
Activity.RESULT_OK-> onFaceCaptchaResultSuccess(data)
Activity.RESULT_CANCELED-> onFaceCaptchaResultCancelled(data)
}
}
DOCUMENTSCOPY_RESULT_REQUEST -> {
when (resultCode) {
Activity.RESULT_OK-> onDocumentscopyResultSuccess()
Activity.RESULT_CANCELED-> onDocumentscopyCancelled(data)
}
}
}
}
Updated 4 months ago