0Pricing
Android Academy · Leçon

Authentification Firebase

Connexion par e-mail et avec Google.

Authentification Firebase est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.

Pourquoi utiliser Firebase Auth ?

Firebase Authentication prend en charge les aspects complexes de la connexion des utilisateurs : stockage sécurisé des mots de passe, actualisation des jetons, récupération des comptes et nombreux fournisseurs (e-mail, Google, Apple, téléphone et mode anonyme).

Au lieu de créer des serveurs de connexion, vous appelez quelques API et obtenez un FirebaseUser vérifié. Dans cette leçon, vous allez utiliser la connexion par e-mail et mot de passe ainsi que la connexion avec Google.

Activer les méthodes de connexion

Avant d’écrire du code, activez les fournisseurs souhaités dans la console Firebase :

  • Accédez à Authentication → Sign-in method.
  • Activez Email/Password.
  • Activez Google (choisissez une adresse e-mail d’assistance).

Pour la connexion avec Google, vous devez également ajouter l’empreinte SHA-1 de votre application dans les paramètres du projet ; sinon, la connexion échouera avec une erreur de développeur.

Obtenir l’instance FirebaseAuth

Le point d’entrée est Firebase.auth. Il expose l’utilisateur actuel ainsi que les méthodes permettant de créer des comptes, de se connecter et de se déconnecter.

auth.currentUser vaut null lorsque personne n’est connecté : c’est un moyen rapide de décider quel écran afficher au lancement.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth

val auth = Firebase.auth

fun isLoggedIn(): Boolean {
    return auth.currentUser != null
}

Créer un compte

Inscrivez un nouvel utilisateur avec createUserWithEmailAndPassword. Cette opération renvoie une tâche, mais dans du code utilisant des coroutines, vous pouvez utiliser await() dessus (depuis kotlinx-coroutines-play-services).

En cas de réussite, l'utilisateur est immédiatement connecté.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth
import kotlinx.coroutines.tasks.await

suspend fun register(email: String, password: String): Result<Unit> {
    return try {
        Firebase.auth
            .createUserWithEmailAndPassword(email, password)
            .await()
        Result.success(Unit)
    } catch (e: Exception) {
        Result.failure(e)
    }
}

Se connecter avec une adresse e-mail

La connexion d'un utilisateur existant s'effectue avec signInWithEmailAndPassword. La structure est similaire à celle de l'inscription.

En plaçant l'appel dans un bloc try/catch, vous pouvez afficher des erreurs claires — mot de passe incorrect, utilisateur inexistant ou adresse e-mail mal formée.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth
import com.google.firebase.auth.FirebaseUser
import kotlinx.coroutines.tasks.await

suspend fun login(email: String, password: String): FirebaseUser? {
    val result = Firebase.auth
        .signInWithEmailAndPassword(email, password)
        .await()
    return result.user
}

Un écran de connexion avec Compose

Intégrez l'authentification à un petit écran Compose. Conservez l'adresse e-mail et le mot de passe dans l'état, appelez les fonctions suspendues depuis un espace de coroutines et affichez les erreurs.

@Composable
fun LoginScreen(onLoggedIn: () -> Unit) {
    var email by remember { mutableStateOf("") }
    var password by remember { mutableStateOf("") }
    var error by remember { mutableStateOf<String?>(null) }
    val scope = rememberCoroutineScope()

    Column(Modifier.padding(16.dp)) {
        TextField(email, { email = it }, label = { Text("Email") })
        TextField(password, { password = it }, label = { Text("Password") })
        error?.let { Text(it, color = Color.Red) }
        Button(onClick = {
            scope.launch {
                val user = login(email, password)
                if (user != null) onLoggedIn() else error = "Login failed"
            }
        }) { Text("Sign in") }
    }
}

Lire l'utilisateur actuel

Un FirebaseUser contient les informations d'identité suivantes : uid (identifiant unique stable), email, displayName et photoUrl.

Utilisez uid comme clé lorsque vous stockez les données de cet utilisateur dans Firestore — son unicité et sa stabilité sont garanties.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth

fun describeUser() {
    val user = Firebase.auth.currentUser ?: return
    println("UID: ${user.uid}")
    println("Email: ${user.email}")
    println("Name: ${user.displayName ?: "(none)"}")
}

Observer l'état d'authentification

L'authentification peut changer à tout moment (connexion, déconnexion ou actualisation du jeton). Enregistrez un AuthStateListener pour réagir à ces changements plutôt que d'effectuer des vérifications périodiques.

C'est idéal pour passer automatiquement de l'écran de connexion à l'écran d'accueil, et inversement.

import com.google.firebase.Firebase
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.auth

val listener = FirebaseAuth.AuthStateListener { auth ->
    val user = auth.currentUser
    if (user == null) {
        println("Signed out -> show login")
    } else {
        println("Signed in as ${user.email}")
    }
}

// Attach and detach with lifecycle
Firebase.auth.addAuthStateListener(listener)
// Firebase.auth.removeAuthStateListener(listener)

Connexion avec Google et Credential Manager

La méthode moderne pour se connecter avec Google consiste à utiliser l'API Credential Manager. Demandez un jeton d'identification Google, puis échangez-le contre un identifiant d'authentification Firebase.

L'étape essentielle consiste à créer un identifiant GoogleAuthProvider à partir du jeton d'identification renvoyé, puis à le transmettre à signInWithCredential.

import com.google.firebase.Firebase
import com.google.firebase.auth.GoogleAuthProvider
import com.google.firebase.auth.auth
import kotlinx.coroutines.tasks.await

suspend fun firebaseSignInWithGoogle(idToken: String) {
    // idToken comes from Credential Manager / Google Identity
    val credential = GoogleAuthProvider.getCredential(idToken, null)
    Firebase.auth.signInWithCredential(credential).await()
}

Se déconnecter

La déconnexion s'effectue en un seul appel : auth.signOut(). Elle efface l'utilisateur local et déclenche votre écouteur d'état d'authentification.

Pour la connexion avec Google, vous pouvez également effacer l'état de Credential Manager afin que le sélecteur s'affiche la prochaine fois. Après la déconnexion, currentUser devient null.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth

fun logout() {
    Firebase.auth.signOut()
    // currentUser is now null; your AuthStateListener fires
}

Gérer les erreurs d'authentification

Les échecs d'authentification lèvent des exceptions typées que vous pouvez traiter séparément :

  • FirebaseAuthInvalidUserException — utilisateur inexistant ou désactivé.
  • FirebaseAuthInvalidCredentialsException — mot de passe incorrect ou adresse e-mail invalide.
  • FirebaseAuthUserCollisionException — adresse e-mail déjà enregistrée.

Associez ces cas à des messages clairs plutôt que d'afficher des traces d'erreur brutes.

import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException
import com.google.firebase.auth.FirebaseAuthUserCollisionException

fun messageFor(e: Throwable): String = when (e) {
    is FirebaseAuthInvalidCredentialsException -> "Wrong email or password"
    is FirebaseAuthUserCollisionException -> "That email is already in use"
    else -> "Something went wrong, try again"
}

Vérification rapide

Vous voulez faire passer automatiquement l'utilisateur de l'écran de connexion à l'écran d'accueil, et inversement, chaque fois qu'il se connecte ou se déconnecte. Quelle est l'approche la plus propre ?

Récapitulatif : authentification

Vous savez maintenant authentifier des utilisateurs avec Firebase :

  • Activez les fournisseurs dans la console et ajoutez votre SHA-1 pour Google.
  • Utilisez Firebase.auth avec createUserWithEmailAndPassword / signInWithEmailAndPassword.
  • Connexion avec Google : obtenez un jeton d'identification, créez un identifiant GoogleAuthProvider, puis appelez signInWithCredential.
  • Lisez l'identité via currentUser (utilisez uid comme clé de vos données).
  • Réagissez avec un AuthStateListener et déconnectez l'utilisateur avec signOut().

Ensuite : stocker les données de cet utilisateur avec Cloud Firestore.

Questions Fréquemment Posées

La leçon « Authentification Firebase » est-elle gratuite ?

Oui — le texte complet de « Authentification Firebase » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Authentification Firebase » ?

Connexion par e-mail et avec Google. Tu pratiques Android Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Android Academy ?

Aucune expérience préalable n'est requise. Android Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Authentification Firebase » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Android Academy ?

Oui. Chaque leçon Android Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configurer Firebase
  2. Authentification Firebase
  3. Principes de Cloud Firestore
  4. Notifications avec Cloud Messaging
← Retour à Android Academy