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 FirebaseApp object:

Swift

// Use Firebase library to configure APIs
FirebaseApp.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 = Auth.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

Auth.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

Auth.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

Auth.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 {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  // ...
}

Objective-C

if (user) {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  NSString *uid = user.uid;
  NSString *email = user.email;
  NSURL *photoURL = user.photoURL;
  // ...
}

Next steps

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

Send feedback about...

Need help? Visit our support page.