Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Introdução ao Firebase Authentication em plataformas Apple

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

Você pode usar o Firebase Authentication para permitir que os usuários façam login no seu aplicativo usando um ou mais métodos de login, incluindo login por endereço de e-mail e senha, e provedores de identidade federada, como Login do Google e Login do Facebook. Este tutorial é uma introdução ao Firebase Authentication mostrando como adicionar o login de endereço de e-mail e senha ao seu aplicativo.

Conecte seu aplicativo ao Firebase

  1. Instale o SDK do Firebase .
  2. No console do Firebase , adicione seu aplicativo ao projeto do Firebase.

Adicionar o Firebase Authentication ao seu aplicativo

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

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

(Opcional) Protótipo e teste com o Firebase Local Emulator Suite

Antes de falar sobre como seu aplicativo autentica os usuários, vamos apresentar um conjunto de ferramentas que você pode usar para criar protótipos e testar a funcionalidade de autenticação: Firebase Local Emulator Suite. Se você estiver decidindo entre técnicas e provedores de autenticação, experimentar diferentes modelos de dados com dados públicos e privados usando Authentication e Firebase Security Rules ou criar protótipos de designs de IU de login, poder trabalhar localmente sem implantar serviços ao vivo pode ser uma ótima ideia .

Um emulador de autenticação faz parte do Local Emulator Suite, que permite que seu aplicativo interaja com o conteúdo e a configuração do banco de dados emulado, bem como opcionalmente com seus recursos de projeto emulados (funções, outros bancos de dados e regras de segurança).

Usar o emulador de autenticação envolve apenas algumas etapas:

  1. Adicionando uma linha de código à configuração de teste do seu aplicativo para se conectar ao emulador.
  2. A partir da raiz do diretório do projeto local, executando firebase emulators:start .
  3. Usando a IU do Local Emulator Suite para prototipagem interativa ou a API REST do emulador de autenticação para testes não interativos.

Um guia detalhado está disponível em Conecte seu aplicativo ao emulador de autenticação . Para obter mais informações, consulte a introdução do Local Emulator Suite .

Agora vamos continuar com como autenticar usuários.

Inicialize o SDK do Firebase

No delegado do seu aplicativo, primeiro importe o SDK do Firebase:

Rápido

import FirebaseCore

Objetivo-C

@import FirebaseCore;

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

Rápido

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

Objetivo-C

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

Ouvir o estado de autenticação

Para cada uma das visualizações do seu aplicativo que precisam de informações sobre o usuário conectado, anexe um ouvinte ao objeto FIRAuth . Esse ouvinte é chamado sempre que o estado de entrada do usuário é alterado.

Anexe o ouvinte no método viewWillAppear do controlador de exibição:

Rápido

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

Objetivo-C

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

E desanexar o ouvinte no método viewWillDisappear do controlador de exibição:

Rápido

Auth.auth().removeStateDidChangeListener(handle!)

Objetivo-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Inscreva-se novos usuários

Crie um formulário que permita que novos usuários se registrem no seu aplicativo usando o endereço de e-mail e uma senha. Quando um usuário preencher o formulário, valide o endereço de e-mail e a senha fornecidos pelo usuário e passe-os para o método createUser :

Rápido

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

Objetivo-C

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

Fazer login de usuários existentes

Crie um formulário que permita que os usuários existentes entrem usando seu endereço de e-mail e senha. Quando um usuário preencher o formulário, chame o método signIn :

Rápido

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

Objetivo-C

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

Obter informações do usuário

Depois que um usuário entrar com êxito, você poderá obter informações sobre o usuário. Por exemplo, em seu listener de estado de autenticação :

Rápido

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 += " "
  }
  // ...
}

Objetivo-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óximos passos

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