S'authentifier avec Firebase sur les plates-formes Apple à l'aide d'un système d'authentification personnalisé
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Vous pouvez intégrer Firebase Authentication à un système d'authentification personnalisé en modifiant votre serveur d'authentification pour qu'il génère des jetons signés personnalisés lorsqu'un utilisateur se connecte. Votre application reçoit ce jeton et l'utilise pour s'authentifier auprès de Firebase.
Utilisez Swift Package Manager pour installer et gérer les dépendances Firebase.
Dans Xcode, à partir de votre projet d'application ouvert, accédez à File > Add Packages (Fichier > Ajouter des packages).
Lorsque vous y êtes invité, ajoutez le dépôt du SDK des plates-formes Firebase pour Apple :
https://github.com/firebase/firebase-ios-sdk.git
Choisissez la bibliothèque Firebase Authentication.
Ajoutez l'indicateur -ObjC à la section Other Linker Flags (Autres indicateurs Linker) des paramètres de compilation de votre cible.
Lorsque vous avez terminé, Xcode commence à résoudre et à télécharger automatiquement vos dépendances en arrière-plan.
Obtenez les clés de serveur de votre projet :
Accédez à la page Comptes de service dans les paramètres de votre projet.
Cliquez sur Générer une clé privée en bas de la section SDK Admin Firebase de la page Comptes de service.
La paire de clés publique/privée du nouveau compte de service est automatiquement enregistrée sur votre ordinateur. Copiez ce fichier sur votre serveur d'authentification.
S'authentifier avec Firebase
Importez le module FirebaseCore dans votre UIApplicationDelegate, ainsi que tous les autres modules Firebase utilisés par le délégué de votre application.
Par exemple, pour utiliser Cloud Firestore et Authentication :
Configurez une instance partagée FirebaseApp dans la méthode application(_:didFinishLaunchingWithOptions:) du délégué de votre application :
SwiftUI
// Use Firebase library to configure APIsFirebaseApp.configure()
Swift
// Use Firebase library to configure APIsFirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs[FIRAppconfigure];
Si vous utilisez SwiftUI, vous devez créer un délégué d'application et l'associer à votre structure App via UIApplicationDelegateAdaptor ou NSApplicationDelegateAdaptor. Vous devez également désactiver le swizzling du délégué d'application. Pour en savoir plus, consultez les instructions SwiftUI.
SwiftUI
@mainstructYourApp:App{// register app delegate for Firebase setup@UIApplicationDelegateAdaptor(AppDelegate.self)vardelegatevarbody:someScene{WindowGroup{NavigationView{ContentView()}}}}
Lorsque les utilisateurs se connectent à votre application, envoyez leurs identifiants de connexion (par exemple, leur nom d'utilisateur et leur mot de passe) à votre serveur d'authentification. Votre serveur vérifie les identifiants et renvoie un jeton personnalisé
s'ils sont valides.
Une fois que vous avez reçu le jeton personnalisé de votre serveur d'authentification, transmettez-le à signInWithCustomToken pour connecter l'utilisateur :
Lorsqu'un utilisateur se connecte pour la première fois, un compte utilisateur est créé et associé aux identifiants (nom d'utilisateur et mot de passe, numéro de téléphone ou informations du fournisseur d'authentification) avec lesquels il s'est connecté. Ce nouveau compte est stocké dans votre projet Firebase et peut être utilisé pour identifier un utilisateur dans toutes les applications de votre projet, quelle que soit la méthode de connexion de l'utilisateur.
Dans vos applications, vous pouvez obtenir les informations de profil de base de l'utilisateur à partir de l'objet User. Consultez Gérer les utilisateurs.
Dans vos règles de sécuritéFirebase Realtime Database et Cloud Storage, vous pouvez obtenir l'ID utilisateur unique de l'utilisateur connecté à partir de la variable auth et l'utiliser pour contrôler les données auxquelles un utilisateur peut accéder.
Vous pouvez également ajouter du code de gestion des erreurs pour toute la gamme d'erreurs d'authentification. Consultez Gérer les erreurs.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[],[],null,["You can integrate Firebase Authentication with a custom authentication system by\nmodifying your authentication server to produce custom signed tokens when a user\nsuccessfully signs in. Your app receives this token and uses it to authenticate\nwith Firebase.\n\nBefore you begin\n\n1. [Create a Firebase project and register your app](/docs/ios/setup) if you haven't already.\n2. Use Swift Package Manager to install and manage Firebase dependencies.\n\n | Visit [our installation guide](/docs/ios/installation-methods) to learn about the different ways you can add Firebase SDKs to your Apple project, including importing frameworks directly and using CocoaPods.\n 1. In Xcode, with your app project open, navigate to **File \\\u003e Add Packages**.\n 2. When prompted, add the Firebase Apple platforms SDK repository: \n\n ```text\n https://github.com/firebase/firebase-ios-sdk.git\n ```\n | **Note:** New projects should use the default (latest) SDK version, but you can choose an older version if needed.\n 3. Choose the Firebase Authentication library.\n 4. Add the `-ObjC` flag to the *Other Linker Flags* section of your target's build settings.\n 5. When finished, Xcode will automatically begin resolving and downloading your dependencies in the background.\n3. Get your project's server keys:\n 1. Go to the [Service Accounts](https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk) page in your project's settings.\n 2. Click *Generate New Private Key* at the bottom of the *Firebase Admin SDK* section of the *Service Accounts* page.\n 3. The new service account's public/private key pair is automatically saved on your computer. Copy this file to your authentication server.\n\nAuthenticate with Firebase\n\n1. Import the `FirebaseCore` module in your `UIApplicationDelegate`, as well as any other [Firebase modules](/docs/ios/setup#available-pods) your app delegate uses. For example, to use Cloud Firestore and Authentication: \n\n SwiftUI \n\n ```swift\n import SwiftUI\n import FirebaseCore\n import FirebaseFirestore\n import FirebaseAuth\n // ...\n \n ```\n\n Swift \n\n ```swift\n import FirebaseCore\n import FirebaseFirestore\n import FirebaseAuth\n // ...\n \n ```\n\n Objective-C \n\n ```objective-c\n @import FirebaseCore;\n @import FirebaseFirestore;\n @import FirebaseAuth;\n // ...\n \n ```\n2. Configure a [`FirebaseApp`](/docs/reference/swift/firebasecore/api/reference/Classes/FirebaseApp) shared instance in your app delegate's `application(_:didFinishLaunchingWithOptions:)` method: \n\n SwiftUI \n\n ```swift\n // Use Firebase library to configure APIs\n FirebaseApp.configure()\n ```\n\n Swift \n\n ```swift\n // Use Firebase library to configure APIs\n FirebaseApp.configure()\n ```\n\n Objective-C \n\n ```objective-c\n // Use Firebase library to configure APIs\n [FIRApp configure];\n ```\n3. If you're using SwiftUI, you must create an application delegate and attach it to your `App` struct via `UIApplicationDelegateAdaptor` or `NSApplicationDelegateAdaptor`. You must also disable app delegate swizzling. For more information, see the [SwiftUI instructions](/docs/ios/learn-more#swiftui). \n\n SwiftUI \n\n ```swift\n @main\n struct YourApp: App {\n // register app delegate for Firebase setup\n @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate\n\n var body: some Scene {\n WindowGroup {\n NavigationView {\n ContentView()\n }\n }\n }\n }\n \n ```\n4. When users sign in to your app, send their sign-in credentials (for example, their username and password) to your authentication server. Your server checks the credentials and returns a [custom token](/docs/auth/admin/create-custom-tokens) if they are valid.\n5. After you receive the custom token from your authentication server, pass it to `signInWithCustomToken` to sign in the user: \n\n Swift \n\n ```swift\n Auth.auth().signIn(withCustomToken: customToken ?? \"\") { user, error in\n // ...\n }\n ```\n\n Objective-C \n\n ```objective-c\n [[FIRAuth auth] signInWithCustomToken:customToken\n completion:^(FIRAuthDataResult * _Nullable authResult,\n NSError * _Nullable error) {\n // ...\n }];\n ```\n\nNext steps\n\nAfter a user signs in for the first time, a new user account is created and\nlinked to the credentials---that is, the user name and password, phone\nnumber, or auth provider information---the user signed in with. This new\naccount is stored as part of your Firebase project, and can be used to identify\na user across every app in your project, regardless of how the user signs in.\n\n- In your apps, you can get the user's basic profile information from the\n [`User`](/docs/reference/ios/firebaseauth/interface_f_i_r_user) object. See [Manage Users](/docs/auth/ios/manage-users).\n\n- In your Firebase Realtime Database and Cloud Storage\n [Security Rules](/docs/database/security/user-security), you can\n get the signed-in user's unique user ID from the `auth` variable,\n and use it to control what data a user can access.\n\nYou can allow users to sign in to your app using multiple authentication\nproviders by [linking auth provider credentials to an\nexisting user account.](/docs/auth/ios/account-linking)\n\nTo sign out a user, call [`signOut:`](/docs/reference/ios/firebaseauth/interface_f_i_r_auth#ab0d5111f05c3f1906243852cc8ef41b1). \n\nSwift \n\n```swift\nlet firebaseAuth = Auth.auth()\ndo {\n try firebaseAuth.signOut()\n} catch let signOutError as NSError {\n print(\"Error signing out: %@\", signOutError)\n}\n```\n\nObjective-C \n\n```objective-c\nNSError *signOutError;\nBOOL status = [[FIRAuth auth] signOut:&signOutError];\nif (!status) {\n NSLog(@\"Error signing out: %@\", signOutError);\n return;\n}\n```\n\nYou may also want to add error handling code for the full range of authentication\nerrors. See [Handle Errors](/docs/auth/ios/errors)."]]