diff --git a/auth/app/src/main/java/com/google/firebase/quickstart/auth/GenericIdpActivity.java b/auth/app/src/main/java/com/google/firebase/quickstart/auth/GenericIdpActivity.java index c8067c735..33573c399 100644 --- a/auth/app/src/main/java/com/google/firebase/quickstart/auth/GenericIdpActivity.java +++ b/auth/app/src/main/java/com/google/firebase/quickstart/auth/GenericIdpActivity.java @@ -6,6 +6,7 @@ import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthCredential; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; @@ -261,4 +262,30 @@ public void onFailure(@NonNull Exception e) { }); // [END auth_oidc_provider_reauth] } + + public void manuallySignIn(String idToken) { + // [START auth_oidc_provider_signin_manual] + AuthCredential credential = OAuthProvider + .newCredentialBuilder("oidc.example-provider") // As registered in Firebase console. + .setIdToken(idToken) // ID token from OpenID Connect flow. + .build(); + FirebaseAuth.getInstance() + .signInWithCredential(credential) + .addOnSuccessListener(new OnSuccessListener() { + @Override + public void onSuccess(AuthResult authResult) { + // User is signed in. + + // IdP data available in: + // authResult.getAdditionalUserInfo().getProfile() + } + }) + .addOnFailureListener(new OnFailureListener() { + @Override + public void onFailure(@NonNull Exception e) { + // Handle failure. + } + }); + // [END auth_oidc_provider_signin_manual] + } } diff --git a/auth/app/src/main/java/com/google/firebase/quickstart/auth/kotlin/GenericIdpActivity.kt b/auth/app/src/main/java/com/google/firebase/quickstart/auth/kotlin/GenericIdpActivity.kt index d17027f17..c191f97f2 100644 --- a/auth/app/src/main/java/com/google/firebase/quickstart/auth/kotlin/GenericIdpActivity.kt +++ b/auth/app/src/main/java/com/google/firebase/quickstart/auth/kotlin/GenericIdpActivity.kt @@ -3,6 +3,9 @@ package com.google.firebase.quickstart.auth.kotlin import androidx.appcompat.app.AppCompatActivity import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.OAuthProvider +import com.google.firebase.auth.ktx.auth +import com.google.firebase.auth.ktx.oAuthCredential +import com.google.firebase.ktx.Firebase class GenericIdpActivity : AppCompatActivity() { @@ -188,4 +191,24 @@ class GenericIdpActivity : AppCompatActivity() { } // [END auth_oidc_provider_reauth] } + + fun manuallySignIn(idToken: String) { + // [START auth_oidc_provider_signin_manual] + val providerId = "oidc.example-provider" // As registered in Firebase console. + val credential = oAuthCredential(providerId) { + setIdToken(idToken) // ID token from OpenID Connect flow. + } + Firebase.auth + .signInWithCredential(credential) + .addOnSuccessListener { authResult -> + // User is signed in. + + // IdP data available in: + // authResult.additionalUserInfo.profile + } + .addOnFailureListener { e -> + // Handle failure. + } + // [END auth_oidc_provider_signin_manual] + } } \ No newline at end of file