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.
1. Kimlik doğrulama yönlendirme URL'sini işleyin
iOS: UIApplication bitirme
AppTemsilcinizin application:openURL:options
yönteminde GIDSignIn
adlı öğenin 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: NSApplication Yetkisi
Uygulamanızın AppTemsilcisinde,
applicationDidFinishLaunching
içindekikAEGetURL
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]; }
GIDSignIn
öğesihandleURL
çağıran şu 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. Bu sayede, kullanıcılar uygulamanızı her açtıklarında oturum açmak zorunda kalmaz (oturumunu kapatmadıkları sürece).
iOS uygulamaları bunu genellikle UIApplicationDelegate
uygulamasının application:didFinishLaunchingWithOptions:
yöntemini ve macOS uygulamaları için NSApplicationDelegate
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 ekleyin
Oturum açma Görünümünüze "Google ile oturum aç" düğmesi ekleyin. Google markasını içeren bir düğme oluşturan ve kullanılması önerilen SwiftUI ve UIKit için bileşenler mevcuttur.
SwiftUI'yi kullanma
Projenize SwiftUI "Google ile oturum aç" düğmesi bağımlılığını eklediğinizden emin olun.
SwiftUI düğmesini eklemek istediğiniz dosyada, gerekli içe aktarma işlemini dosyanın en üstüne ekleyin:
import GoogleSignInSwift
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)
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 kodunu inceleyin.
UIKit'i kullanma
Oturum açma Görünümünüze "Google ile oturum aç" düğmesi ekleyin. Google markalama ile otomatik olarak bir düğme oluşturmak (önerilir) 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 şeridinizeGIDSignInButton
Görünümü eklediğinizde, arayüz oluşturucuda oturum açma düğmesi oluşturulmaz. Oturum açma düğmesini görmek için uygulamayı çalıştırın.colorScheme
vestyle
özelliklerini ayarlayarakGIDSignInButton
öğesinin görünümünü özelleştirebilirsiniz:GIDSignInButton stil özellikleri colorScheme
kGIDSignInButtonColorSchemeLight
kGIDSignInButtonColorSchemeDark
style
kGIDSignInButtonStyleStandard
kGIDSignInButtonStyleWide
kGIDSignInButtonStyleIconOnly
Düğmeyi ViewController'ınızda
signIn:
çağrısı yapan 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
Uygulamanıza, oturum açmış kullanıcıların görebileceği oturum kapatma düğmesi ekleyin.
Düğmeyi ViewController'ınızda
signOut:
çağrısı yapan 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:
- 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.