DEV Community

myougaTheAxo
myougaTheAxo

Posted on

Google Sign-In with Credential Manager in Android

Google Sign-In using Credential Manager provides secure, passwordless authentication with a modern API that works across devices and accounts.

Dependency Setup

implementation("androidx.credentials:credentials:1.2.0")
implementation("com.google.android.gms:play-services-auth:20.7.0")
Enter fullscreen mode Exit fullscreen mode

Initialize Credential Manager

import androidx.credentials.CredentialManager
import com.google.android.gms.auth.api.signin.GoogleIdTokenCredential
import androidx.credentials.GetSignInWithGoogleOption

val credentialManager = CredentialManager.create(context)
val googleIdOption = GetSignInWithGoogleOption.Builder(
    serverClientId = "YOUR_SERVER_CLIENT_ID"
).build()
Enter fullscreen mode Exit fullscreen mode

Request Sign-In

launchSignIn(credentialManager, googleIdOption) { idToken ->
    verifyTokenWithFirebase(idToken)
}

private fun launchSignIn(
    credentialManager: CredentialManager,
    googleIdOption: GetSignInWithGoogleOption,
    onSuccess: (String) -> Unit
) {
    viewModelScope.launch {
        try {
            val result = credentialManager.getCredential(
                context = context,
                request = GetCredentialRequest(listOf(googleIdOption))
            )
            val idToken = (result.credential as? GoogleIdTokenCredential)
                ?.idToken ?: return@launch
            onSuccess(idToken)
        } catch (e: Exception) {
            handleSignInError(e)
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Firebase Integration

private fun verifyTokenWithFirebase(idToken: String) {
    val credential = GoogleAuthProvider.getCredential(idToken, null)
    Firebase.auth.signInWithCredential(credential)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                val user = Firebase.auth.currentUser
                navigateToHome(user)
            }
        }
}
Enter fullscreen mode Exit fullscreen mode

Credential Manager handles account selection automatically on devices with multiple accounts. It's the recommended approach replacing legacy GoogleSignInClient.


8 Android app templates (Habit Tracker, Budget Manager, Task Manager, and more) available on Gumroad

Top comments (0)