Get Started with Firebase Authentication on iOS

You can use Firebase Authentication to allow users to sign in to your app using one or more sign-in methods, including email address and password sign-in, and federated identity providers such as Google Sign-in and Facebook Login. This tutorial gets you started with Firebase Authentication by showing you how to add email address and password sign-in to your app.

Connect your app to Firebase

  1. Install the Firebase SDK.
  2. In the Firebase console, add your app to your Firebase project.

Add Firebase Authentication to your Xcode project

First, ensure the following dependency is in your project's Podfile:

pod 'Firebase/Auth'

Then, run pod install and open the created .xcworkspace file.

Initialize the Firebase SDK

In your app delegate, first import the Firebase SDK:

Swift

import Firebase

Objective-C

@import Firebase;

Then, in the application:didFinishLaunchingWithOptions: method, initialize the FIRApp object:

Swift

// Use Firebase library to configure APIs
FIRApp.configure()

Objective-C

// Use Firebase library to configure APIs
[FIRApp configure];

Listen for authentication state

For each of your app's views that need information about the signed-in user, attach a listener to the FIRAuth object. This listener gets called whenever the user's sign-in state changes.

Attach the listener in the view controller's viewWillAppear method:

Swift

handle = FIRAuth.auth()?.addStateDidChangeListener() { (auth, user) in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

And detach the listener in the view controller's viewWillDisappear method:

Swift

FIRAuth.auth()?.removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Sign up new users

Create a form that allows new users to register with your app using their email address and a password. When a user completes the form, validate the email address and password provided by the user, then pass them to the createUser method:

Swift

FIRAuth.auth()?.createUser(withEmail: email, password: password) { (user, error) in
  // ...
}

Objective-C

[[FIRAuth auth]
    createUserWithEmail:email
               password:password
             completion:^(FIRUser *_Nullable user,
                          NSError *_Nullable error) {
               // ...
             }];

Sign in existing users

Create a form that allows existing users to sign in using their email address and password. When a user completes the form, call the signIn method:

Swift

FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in
  // ...
}

Objective-C

[[FIRAuth auth] signInWithEmail:_emailField.text
                       password:_passwordField.text
                     completion:^(FIRUser *user, NSError *error) {
                       // ...
                     }];

Get user information

After a user signs in successfully, you can get information about the user. For example, in your authentication state listener:

Swift

if let user = user {
  let uid = user.uid  // Unique ID, which you can use to identify the user on the client side
  let email = user.email
  let photoURL = user.photoURL
  user.getTokenWithCompletion({ (token, error) in
    let idToken? = token  // ID token, which you can safely send to a backend
  })
}

Objective-C

if (user) {
  NSString *uid = user.uid;  // Unique ID, which you can use to identify the user on the client side
  NSString *email = user.email;
  NSString *photoURL = user.photoURL;
  [user getTokenWithCompletion:^(NSString *token, NSError *error) {
    // token, if not nil, is an ID token, which you can safely send to a backend
  }];
}

Next steps

Learn how to add support for other identity providers and anonymous guest accounts:

Send feedback about...

Need help? Visit our support page.