Ir para o console

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 Auth.
    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 é normalmente encontrada no método application:didFinishLaunchingWithOptions::

    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().signIn(with: credential) { (authResult, error) in
      if let error = error {
        // ...
        return
      }
      // User is signed in
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInWithCredential: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 os dados que os usuários podem acessar.

Os usuários podem fazer login no app usando vários provedores de autenticação. Para fazer isso, 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.