Google ile Oturum Açma'yı 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 gösterilmektedir. Bu talimatları uygulamanızın yaşam döngüsü veya kullanıcı arayüzü modeli için uyarlamanız gerekebilir.

Başlamadan önce

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

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

iOS: UIApplicationTemsilci

AppTemsilcinizin application:openURL:options yönteminde GIDSignIn adlı kullanıcının 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: NSApplicationAuthor

  1. Uygulamanızın AppTemsilcisi'nde, applicationDidFinishLaunching içindeki kAEGetURL etkinlikleri için 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 hizmetinin handleURL özelliğini çağıran bu etkinlikler için işleyici 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 bir işleyici kaydederek URL'yi alın veGIDSignIn handleURL özelliğini çağırın:

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üklemeye çalış

Uygulamanız başladığında, halihazırda Google kullanarak oturum açan kullanıcıların oturum açma durumunu geri yüklemeyi denemek için restorePreviousSignInWithCallback numaralı telefonu arayın. Bu sayede kullanıcıların, uygulamanızı her açtıklarında (oturumlarını kapatmadıkları sürece) oturum açmaları gerekmez.

iOS uygulamaları bunu genellikle UIApplicationDelegate application:didFinishLaunchingWithOptions: yönteminde, NSApplicationDelegate ise macOS uygulamaları için applicationDidFinishLaunching: yapar. Sonucu, kullanıcıya hangi görünümün sunulacağını belirlemek için 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 bölgesinde restorePreviousSignIn çağrısı yapın:

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 ekleyin

Oturum açma görünümünüze "Google ile oturum aç" düğmesini ekleyin. Bileşenler, Google markasıyla otomatik olarak bir düğme oluşturan ve kullanılması önerilen SwiftUI ve UIKit için kullanılabilir.

SwiftUI kullanma

  1. SwifUI "Google ile oturum aç" düğmesini projenize eklediğinizden emin olun.

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

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

    GoogleSignInButton(action: handleSignInButton)
    
  4. Düğmeye basıldığında işleminize GIDSignIn işlevinin signIn(presentingViewController:completion:) yöntemine bir çağrı ekleyerek oturum açma işlemini 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, 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 bunu GoogleSignInButton(viewModel: yourViewModel, action: yourAction) düğmesi aracılığıyla düğmenin başlatıcısında viewModel olarak ayarlamanız gerekir. Daha fazla bilgi için GoogleSignInButtonViewModel kaynak koduna göz atın.

UIKit'i kullanma

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

    Resimli taslak veya XIB dosyasına GIDSignInButton eklemek için bir Görünüm ekleyin ve özel sınıfını GIDSignInButton olarak ayarlayın. Resimli taslakınıza bir GIDSignInButton Görünümü 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 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, oturumu açık olan kullanıcıların görebileceği bir kapatma 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 Google Hesaplarını kullanarak uygulamanızda oturum açabileceğine göre artık şunları yapabilirsiniz: