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

Bu sayfada, Google ile Oturum Açma'nın 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 işleyiş şeklini öğrenmek 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 adlı kullanıcının şunu çağırın: handleURL: yöntemi:

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, şurada kAEGetURL etkinlikleri için bir işleyici kaydedin: applicationDidFinishLaunching:

    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 öğesinin handleURL öğesini çağıran bu 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];
    }
    

Hızlı Kullanıcı Arayüzü

Uygulamanızın pencere veya sahnesinde, URL'yi almak ve çağrı yapmak için bir işleyici kaydedin GIDSignIn handleURL:

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şlatıldığında, denemek için restorePreviousSignInWithCallback adlı kişiyi arayın ve Google'ı kullanarak oturum açmış kullanıcıların oturum açma durumunu geri yükleyebilir. İşlem devam ediyor kullanıcıların uygulamanızı her açtıklarında oturum açmak zorunda kalmamasını sağlar (yalnızca kullanıcı oturumlarını kapattıysa).

iOS uygulamaları bunu genellikle UIApplicationDelegate application:didFinishLaunchingWithOptions: yöntemi ve NSApplicationDelegate adlı kullanıcının macOS uygulamaları için applicationDidFinishLaunching:. Tekliflerinizi otomatikleştirmek ve optimize etmek için kullanıcıya hangi görünümü sunacağını belirlemek için sonuç. Ö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;
}

Hızlı Kullanıcı Arayüzü

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

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

"Google ile oturum açın" seçeneği ekleyin düğmesini tıklayarak oturum açma görünümünüze ekleyebilirsiniz. SwiftUI ve UIKit için, otomatik olarak bir düğmesini tıklayın ve kullanılmaları önerilir.

SwiftUI'yi kullanma

  1. "Google ile oturum aç" SwiftUI öğesi için bağımlılığı eklediğinizden emin olun düğme projenize ekleyin.

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

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

    GoogleSignInButton(action: handleSignInButton)
    
  4. Düğmeye basıldığında, GIDSignIn Şu aralıkta signIn(presentingViewController:completion:) yöntemi: işleminiz:

    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 özellik, aşağıdakiler için standart stil bilgileri sağlayan varsayılan görünüm modelini kullanır: düğmesini tıklayabilirsiniz. Düğmenin görünümünü kontrol etmek için, özel bir şablon oluşturmanız gerekir GoogleSignInButtonViewModel ve düğmeninviewModel başlatıcı, GoogleSignInButton(viewModel: yourViewModel, action: yourAction) kullanılıyor. Görüntüleyin GoogleSignInButtonViewModel kaynak kodu konulu videomuzu izleyin.

UIKit'i kullanma

  1. "Google ile oturum açın" seçeneği ekleyin düğmesini tıklayarak oturum açma görünümünüze ekleyebilirsiniz. URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için Google ile otomatik olarak düğme oluşturmak için GIDSignInButton sınıfı marka bilinci oluşturma (önerilir) veya özel stile sahip kendi düğmenizi oluşturun.

    Görsel senaryo taslağına veya XIB dosyasına GIDSignInButton eklemek için "Görünüm" ve GIDSignInButton olarak ayarladı. Bir GIDSignInButton Resimli taslağınızı görüntüleyin, oturum açma düğmesi oluşturulmaz kullanabilirsiniz. Oturum açma düğmesini görmek için uygulamayı çalıştırın.

    GIDSignInButton öğesinin görünümünü, colorScheme ve style mülkleri:

    GIDSignInButton stil özellikleri
    colorScheme kGIDSignInButtonColorSchemeLight
    kGIDSignInButtonColorSchemeDark
    style kGIDSignInButtonStyleStandard
    kGIDSignInButtonStyleWide
    kGIDSignInButtonStyleIconOnly
  2. Düğmeyi, ViewController'ınızda şunu çağıran bir yönteme bağlayın: signIn: Ö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 şunu çağıran bir yönteme bağlayın: signOut: Ö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, alıcı: