Autenticar usando o GitHub no iOS

Você pode permitir que os usuários se autentiquem no Firebase usando contas do GitHub. Basta integrar a autenticação do GitHub ao seu app.

Os usuários autenticados podem acessar dados restritos a usuários no Firebase Realtime Database e no Cloud Storage.

Antes de começar

  1. Adicione o Firebase ao projeto do iOS. Inclua os pods a seguir no Podfile:
    pod 'Firebase/Auth'
    
  2. Registre o app como um aplicativo de desenvolvedor no GitHub e receba o ID do cliente e a chave secreta do cliente do OAuth 2.0 do app.
  3. Ative a autenticação do GitHub:
    1. No Console do Firebase, abra a seção Autenticação.
    2. Na guia Método de login, ative o método de login do GitHub e inclua o ID do cliente do OAuth 2.0 e a chave secreta do cliente que você recebeu do GitHub.
    3. Em seguida, defina o URI de redirecionamento do OAuth do Firebase, por exemplo, my-app-12345.firebaseapp.com/__/auth/handler, como o URL de retorno de chamada de autorização na página de configurações do app no GitHub (em inglês).

Autenticar com o Firebase

  1. Integre a autenticação do GitHub ao seu app ao seguir as instruções na documentação do desenvolvedor. Use o fluxo de aplicativo da Web e configure um esquema de URL personalizado no seu app para tratar o retorno de chamada do OAuth 2.0 do GitHub. No final do fluxo de login do GitHub, você receberá um token de acesso do OAuth 2.0.
  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 geralmente 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 com o GitHub, na implementação do didCompleteWithResult:error:, troque o token de acesso do OAuth 2.0 do GitHub por uma credencial do Firebase:

    Swift

    let credential =
        GitHubAuthProvider.credential(withToken: accessToken)
    

    Objective-C

    FIRAuthCredential *credential =
        [FIRGitHubAuthProvider credentialWithToken:accessToken];
    
  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 as 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 o acesso dele aos dados.

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.

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.