SPIDlibraryAndroid
SPIDlibraryAndroid is a library for logging in via SPID through several different identity providers.
Requirements
- Android 4.4+
Usage
- 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.3")
}
- Declare a variable to register the
IdentityProviderSelectorActivityContract
contract using theregisterForActivityResult(I)
method which will give aSpidResult
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 theauthPageUrl
url, thecallbackPageUrl
url and an optional timeoutint
value (default value: 30sec):
val spidConfig = SpidParams.Config( "https://" , // TODO "https://" , // TODO 60 )
- Use the
IdentityProvider.Builder()
builder to add the identity providers:
val idpList = IdentityProvider.Builder() .addAruba(idpParameter = "" ) .addPoste(idpParameter = "" ) .addTim(idpParameter = "" ) .addCustomIdentityProvider( "CUSTOM IDENTITY PROVIDER", R.drawable.ic_spid_idp_custom, "" ) // TODO .build()
- Create a
SpidParams
object using the spidConfig and idpList objects and call theActivityResultLauncher.launch(I)
method:
startSpidFlow.launch(SpidParams(spidConfig, idpList))
License
SPIDlibraryAndroid is released under the BSD 3-Clause License. See LICENSE for details.