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.