Bu sayfada, Google ile Oturum Açma özelliğini iOS veya macOS uygulamasına nasıl entegre edeceğiniz gösterilmektedir. Bu talimatları uygulamanızın yaşam döngüsü veya kullanıcı arayüzü modeli için uyarlamanız gerekebilir.
Başlamadan önce
Bağımlılıkları indirin, Xcode projenizi yapılandırın ve istemci kimliğinizi belirleyin.
1. Kimlik doğrulama yönlendirme URL'sini işleme
iOS: UIApplicationTemsilci
AppTemsilcinizin application:openURL:options
yönteminde GIDSignIn
adlı kullanıcının 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: NSApplicationAuthor
Uygulamanızın AppTemsilcisi'nde,
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
hizmetininhandleURL
özelliğini çağıran bu etkinlikler için işleyici 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 bir işleyici kaydederek URL'yi alın veGIDSignIn
handleURL
özelliğini çağırın:
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, halihazırda Google kullanarak oturum açan kullanıcıların oturum açma durumunu geri yüklemeyi denemek için restorePreviousSignInWithCallback
numaralı telefonu arayın. Bu sayede kullanıcıların, uygulamanızı her açtıklarında (oturumlarını kapatmadıkları sürece) oturum açmaları gerekmez.
iOS uygulamaları bunu genellikle UIApplicationDelegate
application:didFinishLaunchingWithOptions:
yönteminde, NSApplicationDelegate
ise macOS uygulamaları için applicationDidFinishLaunching:
yapar. Sonucu, kullanıcıya hangi görünümün sunulacağını belirlemek için 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
bölgesinde restorePreviousSignIn
çağrısı yapın:
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üğmesini ekleyin. Bileşenler, Google markasıyla otomatik olarak bir düğme oluşturan ve kullanılması önerilen SwiftUI ve UIKit için kullanılabilir.
SwiftUI kullanma
SwifUI "Google ile oturum aç" düğmesini projenize 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 bir "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
işlevininsignIn(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 düğme, 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 bunu GoogleSignInButton(viewModel: yourViewModel, action:
yourAction)
düğmesi aracılığıyla düğmenin başlatıcısında viewModel
olarak ayarlamanız gerekir. Daha fazla bilgi için GoogleSignInButtonViewModel
kaynak koduna göz atın.
UIKit'i kullanma
Oturum açma görünümünüze "Google ile oturum aç" düğmesini ekleyin. Google markasıyla otomatik olarak bir düğme oluşturmak için
GIDSignInButton
sınıfını kullanabilirsiniz (önerilir) veya özel stil ile kendi düğmenizi oluşturabilirsiniz.Resimli taslak veya XIB dosyasına
GIDSignInButton
eklemek için bir Görünüm ekleyin ve özel sınıfınıGIDSignInButton
olarak ayarlayın. Resimli taslakınıza birGIDSignInButton
Görünümü 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
görünümünü,colorScheme
vestyle
özelliklerini ayarlayarak özelleştirebilirsiniz:GIDSignInButton stil özellikleri colorScheme
kGIDSignInButtonColorSchemeLight
kGIDSignInButtonColorSchemeDark
style
kGIDSignInButtonStyleStandard
kGIDSignInButtonStyleWide
kGIDSignInButtonStyleIconOnly
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 ekleme
Uygulamanıza, oturumu açık olan kullanıcıların görebileceği bir kapatma düğmesi ekleyin.
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 Google Hesaplarını kullanarak uygulamanızda oturum açabileceğine göre artık şunları yapabilirsiniz:
- Kullanıcıların Google Hesabı profil bilgilerini alma.
- Kullanıcının Google kimlik jetonunu kullanarak arka uçunuzla kimlik doğrulayın.
- Kullanıcı adına Google API'lerini çağırın.