Skip to content

Commit

Permalink
feat: updated sample app to use the getCredentialsWithAuthentication API
Browse files Browse the repository at this point in the history
  • Loading branch information
desusai7 committed Jun 10, 2024
1 parent 030216a commit f5dfac7
Showing 1 changed file with 70 additions and 28 deletions.
98 changes: 70 additions & 28 deletions sample/src/main/java/com/auth0/sample/DatabaseLoginFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,12 @@ class DatabaseLoginFragment : Fragment() {

private suspend fun dbLoginAsync(email: String, password: String) {
try {
val result = authenticationApiClient.login(email, password, "Username-Password-Authentication")
.validateClaims()
.addParameter("scope", scope)
.addParameter("audience", audience)
.await()
val result =
authenticationApiClient.login(email, password, "Username-Password-Authentication")
.validateClaims()
.addParameter("scope", scope)
.addParameter("audience", audience)
.await()
credentialsManager.saveCredentials(result)
Snackbar.make(
requireView(),
Expand Down Expand Up @@ -199,7 +200,7 @@ class DatabaseLoginFragment : Fragment() {
"Hello ${credentials.user.name}",
Snackbar.LENGTH_LONG
).show()
} catch(error: AuthenticationException) {
} catch (error: AuthenticationException) {
val message =
if (error.isCanceled) "Browser was closed" else error.getDescription()
Snackbar.make(requireView(), message, Snackbar.LENGTH_LONG).show()
Expand Down Expand Up @@ -237,7 +238,7 @@ class DatabaseLoginFragment : Fragment() {
"Logged out",
Snackbar.LENGTH_LONG
).show()
} catch(error: AuthenticationException) {
} catch (error: AuthenticationException) {
val message =
if (error.isCanceled) "Browser was closed" else error.getDescription()
Snackbar.make(requireView(), message, Snackbar.LENGTH_LONG).show()
Expand All @@ -249,20 +250,47 @@ class DatabaseLoginFragment : Fragment() {
}

private fun getCreds() {
val localAuthenticationOptions = LocalAuthenticationOptions.Builder().title("Biometric").description("description").authenticator(AuthenticationLevel.STRONG).negativeButtonText("Cancel").build()
credentialsManager.getCredentialsWithAuthentication(requireActivity(), localAuthenticationOptions, null, 300, emptyMap(), emptyMap(), false, object : Callback<Credentials, CredentialsManagerException> {
override fun onSuccess(result: Credentials) {
Snackbar.make(
requireView(),
"Got credentials - ${result.accessToken}",
Snackbar.LENGTH_LONG
).show()
}
val localAuthenticationOptions =
LocalAuthenticationOptions.Builder().title("Biometric").description("description")
.authenticator(AuthenticationLevel.STRONG).negativeButtonText("Cancel")
.build()
credentialsManager.getCredentialsWithAuthentication(
requireActivity(),
localAuthenticationOptions,
null,
300,
emptyMap(),
emptyMap(),
false,
object : Callback<Credentials, CredentialsManagerException> {
override fun onSuccess(result: Credentials) {
Snackbar.make(
requireView(),
"Got credentials - ${result.accessToken}",
Snackbar.LENGTH_LONG
).show()
}

override fun onFailure(error: CredentialsManagerException) {
Snackbar.make(requireView(), "${error.message}", Snackbar.LENGTH_LONG).show()
}
} )
override fun onFailure(error: CredentialsManagerException) {
Snackbar.make(requireView(), "${error.message}", Snackbar.LENGTH_LONG).show()

when (error) {
CredentialsManagerException.NO_CREDENTIALS -> {
// handle no credentials scenario
println("NO_CREDENTIALS: $error")
}
CredentialsManagerException.NO_REFRESH_TOKEN -> {
// handle no refresh token scenario
println("NO_REFRESH_TOKEN: $error")
}
CredentialsManagerException.STORE_FAILED -> {
// handle store failed scenario
println("STORE_FAILED: $error")
}
// ... similarly for other error codes
}
}
})
}

private suspend fun getCredsAsync() {
Expand All @@ -279,23 +307,30 @@ class DatabaseLoginFragment : Fragment() {
}

private fun getProfile() {
credentialsManager.getCredentials(object : Callback<Credentials, CredentialsManagerException> {
credentialsManager.getCredentials(object :
Callback<Credentials, CredentialsManagerException> {
override fun onSuccess(result: Credentials) {
val users = UsersAPIClient(account, result.accessToken)
users.getProfile(result.user.getId()!!)
.start(object: Callback<UserProfile, ManagementException> {
.start(object : Callback<UserProfile, ManagementException> {
override fun onFailure(error: ManagementException) {
Snackbar.make(requireView(), error.getDescription(), Snackbar.LENGTH_LONG).show()
Snackbar.make(
requireView(),
error.getDescription(),
Snackbar.LENGTH_LONG
).show()
}

override fun onSuccess(result: UserProfile) {
Snackbar.make(
requireView(),
"Got profile for ${result.name}",
Snackbar.LENGTH_LONG
).show()
}
})
})
}

override fun onFailure(error: CredentialsManagerException) {
Snackbar.make(requireView(), "${error.message}", Snackbar.LENGTH_LONG).show()
}
Expand Down Expand Up @@ -324,23 +359,30 @@ class DatabaseLoginFragment : Fragment() {
"random" to (0..100).random(),
)

credentialsManager.getCredentials(object : Callback<Credentials, CredentialsManagerException> {
credentialsManager.getCredentials(object :
Callback<Credentials, CredentialsManagerException> {
override fun onSuccess(result: Credentials) {
val users = UsersAPIClient(account, result.accessToken)
users.updateMetadata(result.user.getId()!!, metadata)
.start(object: Callback<UserProfile, ManagementException> {
.start(object : Callback<UserProfile, ManagementException> {
override fun onFailure(error: ManagementException) {
Snackbar.make(requireView(), error.getDescription(), Snackbar.LENGTH_LONG).show()
Snackbar.make(
requireView(),
error.getDescription(),
Snackbar.LENGTH_LONG
).show()
}

override fun onSuccess(result: UserProfile) {
Snackbar.make(
requireView(),
"Updated metadata for ${result.name} to ${result.getUserMetadata()}",
Snackbar.LENGTH_LONG
).show()
}
})
})
}

override fun onFailure(error: CredentialsManagerException) {
Snackbar.make(requireView(), "${error.message}", Snackbar.LENGTH_LONG).show()
}
Expand Down

0 comments on commit f5dfac7

Please sign in to comment.