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.
Oturum Açma özelliğinin nasıl çalıştığını görmek için iOS ve macOS örnek uygulamamızı deneyin.
1. Kimlik doğrulama yönlendirme URL'sini işleme
iOS: UIApplicationDelegate
AppDelegate'in application:openURL:options
yönteminde GIDSignIn
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'de,
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
handleURL
öğelerini çağıran aşağıdaki 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. Böylece, kullanıcılar uygulamanızı her açtıklarında oturum açmak zorunda kalmazlar (oturumlarını kapatmadıkları sürece).
iOS uygulamaları bunu genellikle UIApplicationDelegate
adlı uygulamanın application:didFinishLaunchingWithOptions:
yöntemini ve macOS uygulamaları için NSApplicationDelegate
uygulamasının 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 ekle
Oturum açma Görünümünüze "Google ile oturum aç" düğmesi ekleyin. Bileşenler, Google markasını içeren bir düğmeyi otomatik olarak oluşturan SwiftUI ve UIKit için kullanılabilir ve kullanılması önerilir.
SwiftUI kullanma
Projenize SwiftUI "Google ile oturum aç" düğmesinin 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 koduna bakın.
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 (önerilen) oluşturmak 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 görünmez. 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:
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 ekle
Uygulamanıza, oturum açmış kullanıcıların görebileceği bir oturum 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 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ğırma