Primeiros passos com o Firebase Authentication no iOS

Use o Firebase Authentication para permitir que os usuários façam login no seu app com um ou mais métodos de login, inclusive login com endereço de e-mail e senha, além de provedores de identidade federados como o Login do Google e do Facebook. Veja neste tutorial os primeiros passos com o Firebase Authentication e como adicionar no seu app um login com endereço de e-mail e senha.

Conectar seu app ao Firebase

  1. Instale o SDK do Firebase.
  2. No Console do Firebase, adicione seu app ao projeto.

Adicionar o Firebase Authentication ao seu app

  1. Adicione a dependência do Firebase Authentication ao Podfile do seu projeto:

    pod 'Firebase/Auth'
    
  2. Execute pod install e abra o arquivo .xcworkspace criado.

Inicializar o SDK do Firebase

No representante do seu app, primeiro importe o SDK do Firebase:

Swift

import Firebase

Objective-C

@import Firebase;

Em seguida, inicialize o objeto FirebaseApp no método application:didFinishLaunchingWithOptions::

Swift

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

Objective-C

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

Detectar o estado de autenticação

Anexe um listener ao objeto FIRAuth para cada visualização do aplicativo que precisa de informações sobre o usuário conectado. Esse listener é chamado sempre que o estado de login do usuário muda.

Anexe o listener ao método viewWillAppear do controlador de visualizações:

Swift

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

Objective-C

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

E desanexe o listener no método viewWillDisappear do controlador de visualizações:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Inscrever novos usuários

Crie um formulário que permita que novos usuários se inscrevam no seu app usando endereço de e-mail e senha. Quando um usuário completar o formulário, valide o endereço de e-mail e a senha informados e envie-os para o método createUser:

Swift

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

Objective-C

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

Inscrever usuários existentes

Crie um formulário que permita que usuários existentes façam login com um endereço de e-mail e senha. Quando um usuário preencher o formulário, chame o método signIn:

Swift

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

Objective-C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

Receber informações do usuário

Depois que um usuário fizer login com sucesso, você pode receber informações sobre ele. Por exemplo, no seu listener de estado de autenticação:

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
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

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 *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

Próximas etapas

Saiba como adicionar suporte para outros provedores de identidade e contas de convidados anônimos: