Step 3. Handling IdpCollector nodes
Your app must handle the IdpCollector
node type that DaVinci sends when a user attempts to authenticate using an external IdP.
When encountering an IdpCollector
node type, call idpCollector.authorize()
to begin authentication with the external IdP:
var node = daVinci.start()
if (node is ContinueNode) {
node.collectors.forEach {
when (it) {
is IdpCollector -> {
when (val result = idpCollector.authorize()) {
is Success -> {
// When success, move to next Node
node.next()
}
is Failure -> {
// Handle the failure
}
}
}
}
}
}
The idpCollector.authorize()
method returns a Success
result when authentication with the external IdP completes successfully. If not, it returns Failure
and Throwable
which shows the root cause of the issue.
val result = idpCollector.authorize()
result.onSuccess {
// Move to next Node
}
result.onFailure {
it // The Throwable
}
The result resembles the following:

Figure 1. An Android app with three external IdP options: Google, Apple, and Facebook.