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

Bu sayfada, Google ile Oturum Açma özelliğinin bir iOS veya macOS uygulamasına nasıl entegre edileceği gösterilmektedir. Bu talimatları, uygulamanızın yaşam döngüsü 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 nasıl çalıştığını görmek için iOS ve macOS örnek uygulamamızı deneyin.

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

iOS: UIApplicationDelegate

AppDelegate'in application:openURL:options yönteminde GIDSignIn 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'de, 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 handleURL öğelerini çağıran aşağıdaki etkinlikler için işleyiciyi 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 GIDSignIn handleURL yöntemini ç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üklemeye çalış

Uygulamanız başladığında, Google'ı kullanarak oturum açmış olan kullanıcıların oturum açma durumunu geri yüklemeyi denemek için restorePreviousSignInWithCallback numaralı telefonu arayın. Böylece, kullanıcılar uygulamanızı her açtıklarında oturum açmak zorunda kalmazlar (oturumlarını kapatmadıkları sürece).

iOS uygulamaları bunu genellikle UIApplicationDelegate adlı uygulamanın application:didFinishLaunchingWithOptions: yöntemini ve macOS uygulamaları için NSApplicationDelegate uygulamasının applicationDidFinishLaunching: yöntemini kullanarak yapar. 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 öğesine 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 ekle

Oturum açma Görünümünüze "Google ile oturum aç" düğmesi ekleyin. Bileşenler, Google markasını içeren bir düğmeyi otomatik olarak oluşturan SwiftUI ve UIKit için kullanılabilir ve kullanılması önerilir.

SwiftUI kullanma

  1. Projenize SwiftUI "Google ile oturum aç" düğmesinin bağımlılığını 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 "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 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 işlem, 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 ilk 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ç" düğmesi ekleyin. Google markalama ile otomatik olarak bir düğme (önerilen) oluşturmak veya özel stile sahip kendi düğmenizi oluşturmak için GIDSignInButton sınıfını kullanabilirsiniz.

    Resimli taslak veya XIB dosyasına GIDSignInButton eklemek için Görünüm ekleyin ve özel sınıfını GIDSignInButton olarak ayarlayın. Film şeridinize GIDSignInButton Görünümü eklediğinizde, arayüz oluşturucuda oturum açma düğmesi görünmez. Oturum açma düğmesini görmek için uygulamayı çalıştırın.

    colorScheme ve style özelliklerini ayarlayarak GIDSignInButton öğesinin görünümünü ö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 ekle

  1. Uygulamanıza, oturum açmış kullanıcıların görebileceği bir oturum 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 artık Google Hesaplarını kullanarak uygulamanızda oturum açabildiklerine göre şunları nasıl yapacağınızı öğrenebilirsiniz: