SPIDlibraryAndroid is a library for logging in via SPID through several different identity providers.
Add dependency to your project:
repositories {
maven {
url = "https://maven.pkg.github.com/INPS-it/SPIDlibraryAndroid"
credentials {
username = GITHUB_USER
password = GITHUB_TOKEN
}
}
}
dependencies {
implementation("it.inps.spid:library:1.0.10")
}
Declare a variable to register the IdentityProviderSelectorActivityContract
contract using the registerForActivityResult(I)
method which will give a SpidResult
object as a return value:
private val startSpidFlow = registerForActivityResult(IdentityProviderSelectorActivityContract()) { spidResult ->
when (spidResult.spidEvent) {
SpidEvent.GENERIC_ERROR -> { /* TODO */ }
SpidEvent.NETWORK_ERROR -> { /* TODO */ }
SpidEvent.SESSION_TIMEOUT -> { /* TODO */ }
SpidEvent.SPID_CONFIG_ERROR -> { /* TODO */ }
SpidEvent.SUCCESS -> { /* spidResult.spidReponse available */ }
SpidEvent.USER_CANCELLED -> { /* TODO */ }
}
}
The SpidResult
object consists of a SpidEvent
object and an optional SpidResponse
object. The SpidResponse
object is only available in case of successful login.
Create a SpidParams.Config
object containing the authPageUrl
url, the callbackPageUrl
url and an optional timeout int
value (default value: 30sec):
val spidConfig = SpidParams.Config(
"https://<insert the auth url here>", // TODO
"https://<insert the callback url here>", // TODO
60
)
Use the IdentityProvider.Builder()
builder to add the identity providers:
val idpList = IdentityProvider.Builder()
.addAruba(idpParameter = "<insert the idp parameter here>")
.addPoste(idpParameter = "<insert the idp parameter here>")
.addTim(idpParameter = "<insert the idp parameter here>")
.addCustomIdentityProvider(
"CUSTOM IDENTITY PROVIDER",
R.drawable.ic_spid_idp_custom,
"<insert the idp parameter here>"
)
// TODO
.build()
Create a SpidParams
object using the spidConfig and idpList objects and call the ActivityResultLauncher.launch(I)
method:
startSpidFlow.launch(SpidParams(spidConfig, idpList))
SPIDlibraryAndroid is released under the BSD 3-Clause License. See LICENSE for details.