Halaman ini menunjukkan cara mengintegrasikan Login dengan Google ke aplikasi iOS atau macOS. Anda mungkin perlu menyesuaikan petunjuk ini untuk siklus proses atau model UI aplikasi Anda.
Sebelum memulai
Download dependensi, konfigurasikan project Xcode Anda, dan tetapkan client ID Anda.
Coba aplikasi contoh iOS dan macOS untuk melihat cara kerja Login.
1. Menangani URL alihan autentikasi
iOS: UIApplicationDelegate
Dalam metode application:openURL:options
Tailwind Anda, panggil metode GIDSignIn
Metode handleURL:
:
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
Di Tailwind aplikasi Anda, daftarkan pengendali untuk peristiwa
kAEGetURL
diapplicationDidFinishLaunching
: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]; }
Tentukan pengendali untuk peristiwa ini yang memanggil
handleURL
GIDSignIn
: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
Di jendela atau scene aplikasi, daftarkan pengendali untuk menerima URL dan memanggil
handleURL
milik GIDSignIn
:
Swift
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
// ...
.onOpenURL { url in
GIDSignIn.sharedInstance.handle(url)
}
}
}
}
2. Mencoba memulihkan status login pengguna
Saat aplikasi Anda dimulai, panggil restorePreviousSignInWithCallback
untuk mencoba dan
memulihkan status login pengguna yang sudah login menggunakan Google. Tindakan ini
memastikan pengguna tidak perlu masuk setiap kali mereka membuka aplikasi (kecuali
mereka telah logout).
Aplikasi iOS sering melakukannya di UIApplicationDelegate
Metode application:didFinishLaunchingWithOptions:
dan
applicationDidFinishLaunching:
NSApplicationDelegate
untuk aplikasi macOS. Gunakan
hasilnya untuk menentukan tampilan mana yang akan ditampilkan kepada pengguna. Contoh:
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
Jika Anda menggunakan SwiftUI, tambahkan panggilan ke restorePreviousSignIn
di onAppear
untuk
pandangan awal Anda:
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. Menambahkan tombol Login dengan Google
Tambahkan "Login dengan Google" ke Tampilan login Anda. Komponen tersedia untuk SwiftUI dan UIKit yang secara otomatis menghasilkan dengan branding Google dan direkomendasikan untuk digunakan.
Menggunakan SwiftUI
Pastikan Anda telah menambahkan dependensi untuk "Login dengan Google" SwiftUI tombol pada proyek Anda.
Di file tempat Anda ingin menambahkan tombol SwiftUI, tambahkan impor yang diperlukan ke bagian atas file:
import GoogleSignInSwift
Tambahkan "Login dengan Google" ke View Anda dan menentukan tindakan yang akan dipanggil saat tombol ditekan:
GoogleSignInButton(action: handleSignInButton)
Memicu proses login ketika tombol ditekan dengan menambahkan panggilan ke
GIDSignIn
MetodesignIn(presentingViewController:completion:)
di tindakan Anda: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. } ) }
Ini menggunakan model tampilan default yang menyediakan informasi gaya visual standar untuk
tombolnya. Untuk mengontrol penampilan tombol, Anda perlu membuat
GoogleSignInButtonViewModel
dan tetapkan sebagai viewModel
dalam
penginisialisasi menggunakan GoogleSignInButton(viewModel: yourViewModel, action:
yourAction)
. Lihat
kode sumber GoogleSignInButtonViewModel
untuk informasi selengkapnya.
Menggunakan UIKit
Tambahkan "Login dengan Google" ke Tampilan login Anda. Anda dapat menggunakan Class
GIDSignInButton
untuk membuat tombol secara otomatis dengan Google branding (direkomendasikan) atau buat tombol Anda sendiri dengan gaya kustom.Untuk menambahkan
GIDSignInButton
ke storyboard atau file XIB, tambahkan View dan atur class khususnya menjadiGIDSignInButton
. Perhatikan bahwa saat Anda menambahkanGIDSignInButton
Lihat ke storyboard Anda, tombol login tidak dirender di builder antarmuka. Jalankan aplikasi untuk melihat tombol login.Anda dapat menyesuaikan tampilan
GIDSignInButton
dengan menyetelnya ProperticolorScheme
danstyle
:Properti gaya GIDSignInButton colorScheme
kGIDSignInButtonColorSchemeLight
kGIDSignInButtonColorSchemeDark
style
kGIDSignInButtonStyleStandard
kGIDSignInButtonStyleWide
kGIDSignInButtonStyleIconOnly
Hubungkan tombol ke sebuah metode dalam ViewController yang memanggil
signIn:
. Misalnya, gunakanIBAction
: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. Menambahkan tombol logout
Tambahkan tombol logout ke aplikasi Anda, yang dapat dilihat oleh pengguna yang login.
Hubungkan tombol ke sebuah metode di ViewController yang memanggil
signOut:
. Misalnya, gunakanIBAction
:Swift
@IBAction func signOut(sender: Any) { GIDSignIn.sharedInstance.signOut() }
Objective-C
- (IBAction)signOut:(id)sender { [GIDSignIn.sharedInstance signOut]; }
Langkah berikutnya
Setelah pengguna dapat login ke aplikasi Anda menggunakan Akun Google mereka, pelajari caranya menjadi:
- Dapatkan pengguna Informasi profil Akun Google.
- Autentikasi dengan backend Anda menggunakan ID Google pengguna sebelumnya yang benar.
- Memanggil Google API atas nama pengguna.