Google ile Oturum Açma özelliğini iOS veya macOS uygulamanıza entegre etme

Bu sayfada, Google ile oturum açma özelliğini iOS veya macOS uygulamasına nasıl entegre edeceğiniz açıklanmaktadır. Bu talimatları, uygulamanızın yaşam döngüsüne veya kullanıcı arayüzü modeline göre uyarlamanız gerekebilir.

Başlamadan önce

Bağımlılıkları indirin, Xcode projenizi yapılandırın ve istemci kimliğinizi ayarlayın.

Oturum açma özelliğinin işleyiş şeklini görmek için iOS ve macOS örnek uygulamamızı deneyin.

1. Kimlik doğrulama yönlendirme URL'sini işleme

iOS: UIApplicationDelegate

AppDelegate'inizin application:openURL:options yönteminde GIDSignIn'nin handleURL: yöntemini çağırın:

Swift

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;
}

macOS: NSApplicationDelegate

  1. Uygulamanızın AppDelegate'inde kAEGetURL etkinlikleri için applicationDidFinishLaunching içinde bir işleyici kaydedin:

    Swift

    func applicationDidFinishLaunching(_ notification: Notification) {
      // Register for GetURL events.
      let appleEventManager = NSAppleEventManager.shared()
      appleEventManager.setEventHandler(
        self,
        andSelector: "handleGetURLEvent:replyEvent:",
        forEventClass: AEEventClass(kInternetEventClass),
        andEventID: AEEventID(kAEGetURL)
      )
    }
    

    Objective-C

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
      // Register for GetURL events.
      NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
      [appleEventManager setEventHandler:self
                         andSelector:@selector(handleGetURLEvent:withReplyEvent:)
                         forEventClass:kInternetEventClass
                         andEventID:kAEGetURL];
    }
    
  2. GIDSignIn'nın handleURL işlevini çağıran bu etkinliklerin işleyicisini tanımlayın:

    Swift

    func handleGetURLEvent(event: NSAppleEventDescriptor?, replyEvent: NSAppleEventDescriptor?) {
        if let urlString =
          event?.paramDescriptor(forKeyword: AEKeyword(keyDirectObject))?.stringValue{
            let url = NSURL(string: urlString)
            GIDSignIn.sharedInstance.handle(url)
        }
    }
    

    Objective-C

    - (void)handleGetURLEvent:(NSAppleEventDescriptor *)event
               withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
          NSString *URLString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
          NSURL *URL = [NSURL URLWithString:URLString];
          [GIDSignIn.sharedInstance handleURL:url];
    }
    

SwiftUI

Uygulamanızın penceresinde veya sahnesinde, URL'yi almak ve GIDSignIns handleURL'yi çağırmak için bir işleyici kaydedin:

Swift

@main
struct MyApp: App {

  var body: some Scene {
    WindowGroup {
      ContentView()
        // ...
        .onOpenURL { url in
          GIDSignIn.sharedInstance.handle(url)
        }
    }
  }
}

2. Kullanıcının oturum açma durumunu geri yüklemeyi deneyin.

Uygulamanız başlatıldığında, Google ile oturum açmış kullanıcıların oturum açma durumunu geri yüklemeyi denemek için restorePreviousSignInWithCallback işlevini çağırın. Bu sayede, kullanıcılar oturumlarını kapatmadıkları sürece uygulamanızı her açtıklarında oturum açmak zorunda kalmaz.

iOS uygulamaları genellikle UIApplicationDelegate yönteminde, macOS uygulamaları ise NSApplicationDelegate yönteminde applicationDidFinishLaunching: bunu yapar.application:didFinishLaunchingWithOptions: Kullanıcıya hangi görünümün sunulacağını belirlemek için sonucu kullanın. Örneğin:

Swift

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 restorePreviousSignInWithCompletion:^(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;
}

SwiftUI

SwiftUI kullanıyorsanız ilk görünümünüz için onAppear içinde restorePreviousSignIn işlevine bir çağrı ekleyin:

Swift

@main
struct MyApp: App {
  var body: some Scene {
    WindowGroup {
      ContentView()
        // ...
        .onAppear {
          GIDSignIn.sharedInstance.restorePreviousSignIn { user, error in
            // Check if `user` exists; otherwise, do something with `error`
          }
        }
    }
  }
}

3. Google ile oturum açma düğmesi ekleme

Oturum açma görünümünüze "Google ile oturum açın" düğmesi ekleyin. Google markalı bir düğmeyi otomatik olarak oluşturan ve kullanılması önerilen SwiftUI ve UIKit için bileşenler mevcuttur.

SwiftUI'ı kullanma

  1. Projenize SwiftUI "Google ile oturum aç" düğmesi için bağımlılık eklediğinizden emin olun.

  2. SwiftUI düğmesini eklemek istediğiniz dosyanın en üstüne gerekli içe aktarma işlemini ekleyin:

    import GoogleSignInSwift
    
  3. Görünümünüze "Google ile oturum aç" düğmesi ekleyin ve düğmeye basıldığında çağrılacak işlemi belirtin:

    GoogleSignInButton(action: handleSignInButton)
    
  4. İşleminize GIDSignIn's signIn(presentingViewController:completion:) yöntemine bir çağrı ekleyerek düğmeye basıldığında oturum açma sürecini tetikleyin:

    func handleSignInButton() {
      GIDSignIn.sharedInstance.signIn(
        withPresenting: rootViewController) { signInResult, error in
          guard let result = signInResult else {
            // Inspect error
            return
          }
          // If sign in succeeded, display the app's main content View.
        }
      )
    }
    

Bu, düğme için standart stil bilgileri sağlayan varsayılan görünüm modelini kullanır. Düğmenin görünümünü kontrol etmek için özel bir GoogleSignInButtonViewModel oluşturmanız ve GoogleSignInButton(viewModel: yourViewModel, action: yourAction) kullanarak düğmenin başlatıcısında viewModel olarak ayarlamanız gerekir. Daha fazla bilgi için GoogleSignInButtonViewModel kaynak koduna bakın.

UIKit'i kullanma

  1. Oturum açma görünümünüze "Google ile oturum açın" düğmesi ekleyin. Google markalı bir düğmeyi otomatik olarak oluşturmak için (önerilir) GIDSignInButton sınıfını kullanabilir veya özel stil içeren kendi düğmenizi oluşturabilirsiniz.

    Bir storyboard veya XIB dosyasına GIDSignInButton eklemek için bir Görünüm ekleyin ve özel sınıfını GIDSignInButton olarak ayarlayın. Bir GIDSignInButton görünümü storyboard'unuza eklediğinizde, arayüz oluşturucuda oturum açma düğmesinin oluşturulmadığını unutmayın. Oturum açma düğmesini görmek için uygulamayı çalıştırın.

    GIDSignInButton öğesinin görünümünü colorScheme ve style özelliklerini ayarlayarak özelleştirebilirsiniz:

    GIDSignInButton stil özellikleri
    colorScheme kGIDSignInButtonColorSchemeLight
    kGIDSignInButtonColorSchemeDark
    style kGIDSignInButtonStyleStandard
    kGIDSignInButtonStyleWide
    kGIDSignInButtonStyleIconOnly
  2. Düğmeyi, ViewController'ınızda signIn: yöntemini çağıran bir yönteme bağlayın. Örneğin, IBAction kullanın:

    Swift

    @IBAction func signIn(sender: Any) {
      GIDSignIn.sharedInstance.signIn(withPresenting: self) { signInResult, 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
          signInWithPresentingViewController:self
                                  completion:^(GIDSignInResult * _Nullable signInResult,
                                               NSError * _Nullable error) {
        if (error) {
          return;
        }
    
        // If sign in succeeded, display the app's main content View.
      }];
    }
    

4. Oturumu kapatma düğmesi ekleme

  1. Uygulamanıza, oturum açmış kullanıcıların görebileceği bir oturumu kapat düğmesi ekleyin.

  2. Düğmeyi, ViewController'ınızda signOut: yöntemini çağıran bir yönteme bağlayın. Örneğin, IBAction kullanın:

    Swift

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

    Objective-C

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

Sonraki adımlar

Kullanıcılar artık Google Hesaplarını kullanarak uygulamanızda oturum açabildiğine göre şunları nasıl yapacağınızı öğrenin: