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
Uygulamanızın AppDelegate'inde
kAEGetURLetkinlikleri içinapplicationDidFinishLaunchingiç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]; }GIDSignIn'nınhandleURLiş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
Projenize SwiftUI "Google ile oturum aç" düğmesi için bağımlılık eklediğinizden emin olun.
SwiftUI düğmesini eklemek istediğiniz dosyanın en üstüne gerekli içe aktarma işlemini ekleyin:
import GoogleSignInSwiftGö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)İşleminize
GIDSignIn'ssignIn(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
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)
GIDSignInButtonsınıfını kullanabilir veya özel stil içeren kendi düğmenizi oluşturabilirsiniz.Bir storyboard veya XIB dosyasına
GIDSignInButtoneklemek için bir Görünüm ekleyin ve özel sınıfınıGIDSignInButtonolarak ayarlayın. BirGIDSignInButtongö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ücolorSchemevestyleözelliklerini ayarlayarak özelleştirebilirsiniz:GIDSignInButton stil özellikleri colorSchemekGIDSignInButtonColorSchemeLight
kGIDSignInButtonColorSchemeDarkstylekGIDSignInButtonStyleStandard
kGIDSignInButtonStyleWide
kGIDSignInButtonStyleIconOnlyDüğmeyi, ViewController'ınızda
signIn:yöntemini çağıran bir yönteme bağlayın. Örneğin,IBActionkullanı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
Uygulamanıza, oturum açmış kullanıcıların görebileceği bir oturumu kapat düğmesi ekleyin.
Düğmeyi, ViewController'ınızda
signOut:yöntemini çağıran bir yönteme bağlayın. Örneğin,IBActionkullanı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:
- Kullanıcıların Google Hesabı profil bilgilerini alma
- Kullanıcının Google kimliği jetonunu kullanarak arka uçunuzla kimlik doğrulayın.
- Kullanıcı adına Google API'lerini çağırın.