Comece a usar o Firebase Authentication nas plataformas Apple

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. Este tutorial mostra uma introdução ao 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 do Firebase.

Adicionar o Firebase Authentication ao seu app

Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase.

  1. No Xcode, com seu projeto do app aberto, navegue até File > Add Packages.
  2. Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Escolha a biblioteca do Firebase Authentication.
  5. Quando terminar, o Xcode vai começar a resolver e fazer o download das dependências em segundo plano automaticamente.

Criar protótipos e fazer testes com o Pacote de emuladores locais do Firebase (opcional)

Antes de obter informações sobre como o app autentica os usuários, confira o Pacote de emuladores locais do Firebase, um conjunto de ferramentas que podem ser usadas para criar protótipos e testar a funcionalidade do Authentication. Trabalhar no local sem implantar serviços ativos é uma ótima ideia se você estiver escolhendo técnicas e provedores de autenticação, testando modelos diferentes com dados públicos e privados usando o Authentication e as regras de segurança do Firebase ou criando protótipos de designs de IUs de login.

Um emulador do Authentication faz parte do Pacote de emuladores locais, que permite ao app interagir com o conteúdo e a configuração do banco de dados emulado e também com os recursos do projeto emulado (opcional), como funções, outros bancos de dados e regras de segurança.

O uso do emulador do Authentication envolve apenas algumas etapas:

  1. Para se conectar ao emulador, adicione uma linha de código à configuração de teste do app.
  2. Execute firebase emulators:start na raiz do diretório do projeto local.
  3. Use a IU do Pacote de emuladores locais para fazer uma prototipagem interativa ou a API REST do emulador do Authentication para fazer testes não interativos.

Tenha acesso a um guia detalhado em Conecte seu aplicativo ao emulador do Authentication. Para mais informações, consulte Introdução ao Pacote de emuladores locais do Firebase.

Agora vamos autenticar os usuários.

Inicializar o SDK do Firebase

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

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

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];

Login de 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 preencher 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) {
  // ...
}];

Login de 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: