You can integrate Firebase Authentication with a custom authentication system by modifying your authentication server to produce custom signed tokens when a user successfully signs in. Your app receives this token and uses it to authenticate with Firebase.
Before you begin
- If you haven't already, follow the steps in the Get started guide.
- Install and configure the Firebase Admin SDK . Be sure to initialize the SDK with the correct credentials for your Firebase project.
Authenticate with Firebase
-
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, if they are valid, creates a custom Firebase token and sends the token back to your app.
-
After you receive the custom token from your authentication server, pass it to
signInWithCustomToken()to sign in the user:try { final userCredential = await FirebaseAuth . instance . signInWithCustomToken ( token ); print ( "Sign-in successful." ); } on FirebaseAuthException catch ( e ) { switch ( e . code ) { case "invalid-custom-token" : print ( "The supplied token is not a Firebase custom auth token." ); break ; case "custom-token-mismatch" : print ( "The supplied token is for a different Firebase project." ); break ; default : print ( "Unknown error." ); } }
Next steps
After a user creates a new account, this account is stored as part of your Firebase project, and can be used to identify a user across every app in your project, regardless of what sign-in method the user used.
In your apps, you can get the user's basic profile information from the User
object. See Manage Users
.
In your Firebase Realtime Database and Cloud Storage Security Rules, you can
get the signed-in user's unique user ID from the auth
variable, and use it to
control what data a user can access.
You can allow users to sign in to your app using multiple authentication providers by linking auth provider credentials ) to an existing user account.
To sign out a user, call signOut()
:
await
FirebaseAuth
.
instance
.
signOut
();

