Integração do Login do Google em seu aplicativo iOS

Esta página mostra como integrar o Google Sign-In a um aplicativo iOS baseado em UIKit e no ciclo de vida UIApplicationDelegate . Se seu aplicativo for baseado em cena ou usar SwiftUI, você precisará adaptar essas instruções ao ciclo de vida escolhido.

Antes de você começar

Baixe as dependências e configure seu projeto Xcode .

1. Configure a biblioteca de login do Google

  1. Criar um GIDConfiguration objeto usando os IDs de cliente que você criou ao completar os iniciados recebendo etapas. Você pode fazer isso onde quer que mantenha o estado de configuração do aplicativo, como um objeto singleton.

    Rápido

    let signInConfig = GIDConfiguration.init(clientID: "YOUR_IOS_CLIENT_ID")
    

    Objective-C

    signInConfig = [[GIDConfiguration alloc] initWithClientID:@"YOUR_IOS_CLIENT_ID"];
    

    Se você precisar obter os tokens de ID dos usuários para autenticação de back-end , defina também o parâmetro serverClientID . Se você deseja otimizar o sign-in de fluxo para um domínio do Google Workspace, ou se você quiser especificar um domínio OpenID, você pode usar os hostedDomain e openIDRealm parâmetros, respectivamente.

  2. No método application:openURL:options GIDSignIn , chame o método handleURL: :

    Rápido

    func application(
      _ app: UIApplication,
      open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]
    ) -> Bool {
      var handled: Bool
    
      handled = GIDSignIn.sharedInstance.handle(url)
      if handled {
        return true
      }
    
      // Handle other custom URL types.
    
      // If not handled by this app, return false.
      return false
    }
    

    Objective-C

    - (BOOL)application:(UIApplication *)app
                openURL:(NSURL *)url
                options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
      BOOL handled;
    
      handled = [GIDSignIn.sharedInstance handleURL:url];
      if (handled) {
        return YES;
      }
    
      // Handle other custom URL types.
    
      // If not handled by this app, return NO.
      return NO;
    }
    

2. Tentar restaurar o estado de login do usuário

Quando seu aplicativo for inicializado, chame restorePreviousSignInWithCallback para tentar restaurar o estado de login de usuários que já fizeram login usando o Google. Isso garante que os usuários não precisem fazer login sempre que abrirem seu aplicativo (a menos que tenham saído).

Os aplicativos geralmente fazem isso no método application:didFinishLaunchingWithOptions: e usam o resultado para determinar qual visualização apresentar ao usuário. Por exemplo:

Rápido

func application(
  _ application: UIApplication,
  didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
  GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
    if error != nil || user == nil {
      // Show the app's signed-out state.
    } else {
      // Show the app's signed-in state.
    }
  }
  return true
}

Objective-C

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GIDSignIn.sharedInstance restorePreviousSignInWithCallback:^(GIDGoogleUser * _Nullable user,
                                                                NSError * _Nullable error) {
    if (error) {
      // Show the app's signed-out state.
    } else {
      // Show the app's signed-in state.
    }
  }];
  return YES;
}

3. Adicione um botão de login do Google

  1. Adicione um botão "Sign in with Google" à sua visualização de login. Você pode usar a classe GIDSignInButton para gerar automaticamente um botão com a marca Google (recomendado) ou criar seu próprio botão com um estilo personalizado.

    Para adicionar um GIDSignInButton a um storyboard ou arquivo XIB, adicione uma Visualização e defina sua classe personalizada como GIDSignInButton . Observe que quando você adiciona uma visualização GIDSignInButton ao seu storyboard, o botão de login não é renderizado no construtor de interface. Execute o aplicativo para ver o botão de login.

    Você pode personalizar a aparência de um GIDSignInButton definindo suas propriedades colorScheme e style :

    Propriedades de estilo GIDSignInButton
    colorScheme kGIDSignInButtonColorSchemeLight
    kGIDSignInButtonColorSchemeDark
    style kGIDSignInButtonStyleStandard
    kGIDSignInButtonStyleWide
    kGIDSignInButtonStyleIconOnly
  2. Conecte o botão a um método em seu ViewController que chama signInWithConfiguration: passando o objeto de configuração que você criou na etapa 1. Por exemplo, use uma IBAction :

    Rápido

    @IBAction func signIn(sender: Any) {
      GIDSignIn.sharedInstance.signIn(with: signInConfig, presenting: self) { user, error in
        guard error == nil else { return }
    
        // If sign in succeeded, display the app's main content View.
      }
    }
    

    Objective-C

    - (IBAction)signIn:(id)sender {
      [GIDSignIn.sharedInstance signInWithConfiguration:signInConfig
                               presentingViewController:self
                                               callback:^(GIDGoogleUser * _Nullable user,
                                                          NSError * _Nullable error) {
        if (error) {
          return;
        }
    
        // If sign in succeeded, display the app's main content View.
      }];
    }
    

4. Adicione um botão de desconexão

  1. Adicione um botão de logout ao seu aplicativo, visível para usuários conectados.

  2. Conecte o botão a um método em seu ViewController que chama signOut: Por exemplo, use um IBAction :

    Rápido

    @IBAction func signOut(sender: Any) {
      GIDSignIn.sharedInstance.signOut()
    }
    

    Objective-C

    - (IBAction)signOut:(id)sender {
      [GIDSignIn.sharedInstance signOut];
    }
    

Próximos passos

Agora que os usuários podem fazer login em seu aplicativo usando suas Contas do Google, saiba como: