Ir para o console

Autenticar usando o login do Facebook no iOS

Permita que os usuários se autentiquem com o Firebase usando as contas do Facebook deles. Basta integrar o login do Facebook ao seu aplicativo.

Antes de começar

  1. Adicione o Firebase ao projeto do iOS. Inclua os pods a seguir no Podfile:
    pod 'Firebase/Auth'
  2. Se você ainda não conectou o app ao projeto do Firebase, faça isso no Firebase console.
  3. No Facebook for Developers, acesse o Código do app e a Chave secreta do app.
  4. Ative o login do Facebook:
    1. No Console do Firebase, abra a seção Auth.
    2. Na guia Método de login, ative o método de login pelo Facebook e especifique o código e a chave secreta do app recebidos do Facebook.
    3. Em seguida, verifique se o URI de redirecionamento do OAuth (por exemplo, my-app-12345.firebaseapp.com/__/auth/handler) está listado como um dos URIs de redirecionamento do OAuth na página de configurações do seu app do Facebook. No site Facebook for Developers, acesse Configurações do produto > Login do Facebook.

Autenticar com o Firebase

  1. Integre o login do Facebook ao seu app seguindo as instruções na documentação do desenvolvedor. Ao inicializar o objeto FBSDKLoginButton, defina um representante para receber eventos de login e logout. Por exemplo:

    Swift

    let loginButton = FBSDKLoginButton()
    loginButton.delegate = self
    

    Objective-C

    FBSDKLoginButton *loginButton = [[FBSDKLoginButton alloc] init];
    loginButton.delegate = self;
    
    No representante, implemente didCompleteWithResult:error:.

    Swift

    func loginButton(_ loginButton: FBSDKLoginButton!, didCompleteWith result: FBSDKLoginManagerLoginResult!, error: Error!) {
      if let error = error {
        print(error.localizedDescription)
        return
      }
      // ...
    }
    

    Objective-C

    - (void)loginButton:(FBSDKLoginButton *)loginButton
        didCompleteWithResult:(FBSDKLoginManagerLoginResult *)result
                        error:(NSError *)error {
      if (error == nil) {
        // ...
      } else {
        NSLog(error.localizedDescription);
      }
    }
    
  2. Importe o módulo do Firebase no UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  3. Configure uma instância compartilhada do FirebaseApp, que normalmente está no método application:didFinishLaunchingWithOptions: do aplicativo:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  4. Depois que um usuário fizer login, receba um token de acesso para o usuário conectado durante a implementação do didCompleteWithResult:error: e troque-o por uma credencial do Firebase:

    Swift

    let credential = FacebookAuthProvider.credential(withAccessToken: FBSDKAccessToken.current().tokenString)

    Objective-C

    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
  5. Por último, use a credencial do Firebase para fazer a autenticação:

    Swift

    Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
      if let error = error {
        // ...
        return
      }
      // User is signed in
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInAndRetrieveDataWithCredential:credential
                                             completion:^(FIRAuthDataResult * _Nullable authResult,
                                                          NSError * _Nullable error) {
      if (error) {
        // ...
        return;
      }
      // User successfully signed in. Get user data from the FIRUser object
      if (authResult == nil) { return; }
      FIRUser *user = authResult.user;
      // ...
    }];

Próximas etapas

Depois que um usuário faz login pela primeira vez, uma nova conta é criada e vinculada às credenciais, que podem ser o número do telefone, o nome de usuário e a senha ou as informações do provedor de autenticação. Essa nova conta é armazenada como parte do projeto do Firebase. Ela pode ser usada para identificar um usuário em todos os apps do projeto, independentemente do método de login usado.

  • Nos apps, é possível acessar informações básicas de perfil do usuário a partir do objeto FIRUser. Consulte Gerenciar usuários.

  • Nas Regras de segurança do Firebase Realtime Database e do Cloud Storage, é possível usar a variável auth para encontrar o código exclusivo do usuário conectado. Use essa informação para controlar quais dados ele pode acessar.

Os usuários podem fazer login no app usando vários provedores de autenticação. Basta vincular as credenciais desses provedores a uma conta de usuário.

Para desconectar um usuário, chame signOut:.

Swift

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

Objective-C

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

Adicione também o código de gerenciamento dos possíveis erros de autenticação. Consulte Solucionar erros.