O Firebase vai estar no Google I/O em 10 de maio! Inscreva-se agora

Comece a usar o Firebase Authentication nas plataformas Apple

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Use o Firebase Authentication para permitir que os usuários façam login no app com um ou mais métodos, inclusive login com endereço de e-mail e senha, além de permitir provedores de identidade federados, como os Logins 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 as regras de segurança do Firebase e do Authentication 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 representante 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: