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
Kullanıcı Google ile kimliğini doğruladıktan sonra kimlik doğrulama akışı, kullanıcının kimlik jetonu da dahil olmak üzere kimlik doğrulama yanıtını içeren bir URL ile uygulamanıza geri yönlendirir. Bu URL'nin GIDSignIn öğesine iletilmesi, SDK'nın yanıtı ayrıştırmasına ve kullanıcının kimlik bilgilerini uygulamanıza döndürmesine olanak tanır.
iOS: UIApplicationDelegate
AppDelegate'inizin application:openURL:options yönteminde GIDSignIn'in 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 bunu UIApplicationDelegate's
application:didFinishLaunchingWithOptions: yönteminde, macOS uygulamaları ise NSApplicationDelegate's applicationDidFinishLaunching: yönteminde 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 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. SwiftUI ve UIKit için, Google markalama kurallarına uygun düğmeler oluşturan 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 GoogleSignInSwiftSunum için etkin kök görünüm denetleyicisini almak üzere
UIApplicationuzantısı ekleyin:extension UIApplication { // Minimal implementation to retrieve the active root view // controller for presentation. Apps presenting sign-in from deeper // within an existing view hierarchy should ensure they select the // appropriate view controller. var rootViewController: UIViewController? { let windowScene = connectedScenes .compactMap { scene in scene as? UIWindowScene } .first { scene in scene.activationState == .foregroundActive } return windowScene?.windows.first(where: { window in window.isKeyWindow })?.rootViewController } }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)İşleminize
GIDSignIn'ssignIn(withPresenting:completion:)yöntemine bir çağrı ekleyerek düğmeye basıldığında oturum açma sürecini tetikleyin:func handleSignInButton() { guard let rootViewController = UIApplication.shared.rootViewController else { // Handle error return } 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
GIDSignInButtonsınıfını kullanabilir (önerilir) 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.GIDSignInButtonGörünümü storyboard'unuza eklediğinizde oturum açma düğmesinin arayüz oluşturucuda 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 tarafından görülebilen ve GIDSignIn'nın signOut yöntemini çağıran bir oturumu kapat düğmesi ekleyin.
signOut çağrısı, GIDSignIn içinde depolanan oturum açma durumunu temizler ve kullanıcının uygulamanızla ilgili kimlik bilgilerini anahtar zincirinden kaldırır. Uygulamanız, kendi durumunu ve kullanıcı arayüzünü güncellemekten sorumludur. Oturumu kapatma yalnızca uygulamanız için geçerlidir. Kullanıcının diğer uygulamalarda veya hizmetlerdeki oturumu kapatılmaz ve kullanıcının uygulamanıza verdiği izinler iptal edilmez.
SwiftUI'ı kullanma
SwiftUI'da GIDSignIn.sharedInstance.signOut() işlevini çağıran bir Button ekleyin:
Button("Sign Out") {
GIDSignIn.sharedInstance.signOut()
// Calling signOut() may not automatically trigger UI updates.
// Update your app's state as needed.
}
UIKit'i kullanma
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 yapacaklarını öğrenin:
- Kullanıcıların Google Hesabı profil bilgilerini alma
- Kullanıcının Google kimliği jetonunu kullanarak arka uçunuzda kimlik doğrulama yapın.
- Kullanıcı adına Google API'lerini çağırın.