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

Autentique-se com o Firebase usando contas baseadas em senha nas plataformas da 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 seus usuários se autentiquem no Firebase usando seus endereços de e-mail e senhas e para gerenciar as contas baseadas em senha do seu aplicativo.

Antes de você começar

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.

Em seguida, execute algumas etapas de configuração:

  1. Se você ainda não conectou seu aplicativo ao projeto do Firebase, faça isso no Firebase console .
  2. Ativar login por e-mail/senha:
    1. No console do Firebase , abra a seção Auth .
    2. Na guia Método de login , habilite o método de login por e- mail/senha e clique em Salvar .

Criar uma conta baseada em senha

Para criar uma nova conta de usuário com uma senha, conclua as etapas a seguir na atividade de login do seu aplicativo:

  1. Importe o módulo FirebaseCore em seu UIApplicationDelegate , bem como qualquer outro módulo Firebase usado pelo delegado do aplicativo. Por exemplo, para usar o Cloud Firestore e a autenticação:

    Rápido

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objetivo-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configure uma instância compartilhada do FirebaseApp no ​​método application(_:didFinishLaunchingWithOptions:) do representante do seu aplicativo:

    Rápido

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

    Objetivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Quando um novo usuário se inscrever usando o formulário de inscrição do seu aplicativo, conclua todas as novas etapas de validação de conta exigidas pelo aplicativo, como verificar se a senha da nova conta foi digitada corretamente e atende aos requisitos de complexidade.
  4. Crie uma nova conta passando o endereço de e-mail e a senha do novo usuário para createUserWithEmail:email:password:completion: .

    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) {
      // ...
    }];
    Se a nova conta foi criada com sucesso, o usuário está conectado e você pode obter os dados da conta do usuário do objeto de resultado que é passado para o método de retorno de chamada.

Entrar um usuário com um endereço de e-mail e senha

As etapas para fazer login de um usuário com uma senha são semelhantes às etapas para criar uma nova conta. Na atividade de login do seu aplicativo, faça o seguinte:

  1. Importe o módulo FirebaseCore em seu UIApplicationDelegate , bem como qualquer outro módulo Firebase usado pelo delegado do aplicativo. Por exemplo, para usar o Cloud Firestore e a autenticação:

    Rápido

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objetivo-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configure uma instância compartilhada do FirebaseApp no ​​método application(_:didFinishLaunchingWithOptions:) do representante do seu aplicativo:

    Rápido

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

    Objetivo-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Quando um usuário entrar em seu aplicativo, passe o endereço de e-mail e a senha do usuário para signInWithEmail:email:password:completion: .

    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) {
      // ...
    }];
    Se o usuário entrar com êxito, você poderá obter os dados da conta do usuário do objeto de resultado que é passado para o método de retorno de chamada.

Próximos passos

Depois que um usuário entra pela primeira vez, uma nova conta de usuário é criada e vinculada às credenciais, ou seja, o nome de usuário e a senha, o número de telefone ou as informações do provedor de autenticação com as quais o usuário fez login. Essa nova conta é armazenada como parte do seu projeto do Firebase e pode ser usada para identificar um usuário em todos os aplicativos do projeto, independentemente de como o usuário faça login.

  • Em seus aplicativos, você pode obter as informações básicas do perfil do usuário do objeto FIRUser . Consulte Gerenciar usuários .

  • Nas regras de segurança do Firebase Realtime Database e do Cloud Storage , você pode obter o ID de usuário exclusivo do usuário conectado a partir da variável de auth e usá-lo para controlar quais dados um usuário pode acessar.

Você pode permitir que os usuários façam login no seu aplicativo usando vários provedores de autenticação vinculando as credenciais do provedor de autenticação a uma conta de usuário existente.

Para desconectar um usuário, chame signOut: .

Rápido

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}
  

Objetivo-C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

Você também pode adicionar código de tratamento de erros para toda a gama de erros de autenticação. Consulte Manipular Erros .