Bu sayfada, Google ile Oturum Açma'nın 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 işleyiş şeklini öğrenmek 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
adlı kullanıcının şunu çağırın:
handleURL:
yöntemi:
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, şurada
kAEGetURL
etkinlikleri için bir işleyici kaydedin:applicationDidFinishLaunching
: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
öğesininhandleURL
öğesini çağıran bu 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]; }
Hızlı Kullanıcı Arayüzü
Uygulamanızın pencere veya sahnesinde, URL'yi almak ve çağrı yapmak için bir işleyici kaydedin
GIDSignIn
handleURL
:
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şlatıldığında, denemek için restorePreviousSignInWithCallback
adlı kişiyi arayın ve
Google'ı kullanarak oturum açmış kullanıcıların oturum açma durumunu geri yükleyebilir. İşlem devam ediyor
kullanıcıların uygulamanızı her açtıklarında oturum açmak zorunda kalmamasını sağlar (yalnızca
kullanıcı oturumlarını kapattıysa).
iOS uygulamaları bunu genellikle UIApplicationDelegate
application:didFinishLaunchingWithOptions:
yöntemi ve
NSApplicationDelegate
adlı kullanıcının macOS uygulamaları için applicationDidFinishLaunching:
. Tekliflerinizi otomatikleştirmek ve optimize etmek için
kullanıcıya hangi görünümü sunacağını
belirlemek için sonuç. Ö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;
}
Hızlı Kullanıcı Arayüzü
SwiftUI kullanıyorsanız şunun için onAppear
içinde restorePreviousSignIn
öğesine bir çağrı ekleyin:
ilk görünümünüz:
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
"Google ile oturum açın" seçeneği ekleyin düğmesini tıklayarak oturum açma görünümünüze ekleyebilirsiniz. SwiftUI ve UIKit için, otomatik olarak bir düğmesini tıklayın ve kullanılmaları önerilir.
SwiftUI'yi kullanma
"Google ile oturum aç" SwiftUI öğesi için bağımlılığı eklediğinizden emin olun düğme projenize ekleyin.
SwiftUI düğmesini eklemek istediğiniz dosyada, gerekli içe aktarma işlemini dosyanın en üstüne ekleyin:
import GoogleSignInSwift
"Google ile oturum açın" seçeneği ekleyin Görünüm sayfanıza ekleyin ve işlemi belirtin şu düğmeye basıldığında çağrılacak:
GoogleSignInButton(action: handleSignInButton)
Düğmeye basıldığında,
GIDSignIn
Şu aralıktasignIn(presentingViewController:completion:)
yöntemi: işleminiz: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 özellik, aşağıdakiler için standart stil bilgileri sağlayan varsayılan görünüm modelini kullanır:
düğmesini tıklayabilirsiniz. Düğmenin görünümünü kontrol etmek için, özel bir şablon oluşturmanız gerekir
GoogleSignInButtonViewModel
ve düğmeninviewModel
başlatıcı, GoogleSignInButton(viewModel: yourViewModel, action:
yourAction)
kullanılıyor. Görüntüleyin
GoogleSignInButtonViewModel
kaynak kodu
konulu videomuzu izleyin.
UIKit'i kullanma
"Google ile oturum açın" seçeneği ekleyin düğmesini tıklayarak oturum açma görünümünüze ekleyebilirsiniz. URL parametrelerinin Google tarafından nasıl ele alınmasını istediğinizi belirtmek için Google ile otomatik olarak düğme oluşturmak için
GIDSignInButton
sınıfı marka bilinci oluşturma (önerilir) veya özel stile sahip kendi düğmenizi oluşturun.Görsel senaryo taslağına veya XIB dosyasına
GIDSignInButton
eklemek için "Görünüm" veGIDSignInButton
olarak ayarladı. BirGIDSignInButton
Resimli taslağınızı görüntüleyin, oturum açma düğmesi oluşturulmaz kullanabilirsiniz. Oturum açma düğmesini görmek için uygulamayı çalıştırın.GIDSignInButton
öğesinin görünümünü,colorScheme
vestyle
mülkleri:GIDSignInButton stil özellikleri colorScheme
kGIDSignInButtonColorSchemeLight
kGIDSignInButtonColorSchemeDark
style
kGIDSignInButtonStyleStandard
kGIDSignInButtonStyleWide
kGIDSignInButtonStyleIconOnly
Düğmeyi, ViewController'ınızda şunu çağıran bir yönteme bağlayın:
signIn:
Ö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 şunu çağıran bir yönteme bağlayın:
signOut:
Ö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, alıcı:
- Kullanıcıların Google Hesabı profil bilgileri.
- Kullanıcının Google kimliğini kullanarak arka ucunuzla kimlik doğrulayın jeton.
- Kullanıcı adına Google API'lerini çağırın.