Firebase AuthenticationではIPASSでのアカウント登録、ログイン以外に、Googleアカウントなどの普段ユーザーが使うアカウントを用いてログインできるソーシャルログインの実装もできます。
最近ではUI/UXでいかにシームレスにユーザーが使いやすくアプリ開発設計をするかが大事で、その中でソーシャルログインの実装も1つのUIUXを向上させるためのひと工夫になると思います。
そこで今回はFirebase AuthenticationのGoogleアカウントでのログイン実装をしていきたいと思います。
IPASSでのログイン実装は以下でやってますので、ぜひ見てみてください。
Contents
Firebaseの管理画面で、Googleアカウントでログインすることを有効にする
認証キーの設定
認証キーを設定するために、
Firebaseをアプリに登録するためにxcodeに入れた、
GoogleService-Infoの中身を見ます。
その中のREVERSED_CLIENT_IDの値を確認します。
そして、xcodeのTargets > Info > URL Typesで+をクリックする
先程確認した、RESERVED_CLIENT_IDを
URL Schemasに設定する
該当のライブラリをPodfileにとりこむ
まずPodfileに
pod 'Firebase/Auth'
pod 'GoogleSignIn'
を取り込む
そして、pod installで上記ライブラリをインストールします
プログラムを実装する
以下のコードをAppDelegateクラスに記載します。
そしてimport GoogleSignIn、import Firebaseを読み込みます。
@available(iOS 9.0, *) func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return GIDSignIn.sharedInstance.handle(url) }
以下のような感じになります。
import SwiftUI import Firebase import GoogleSignIn @main struct AppMain: App { @UIApplicationDelegateAdaptor (AppDelegate.self) var appDelegate // struct @mainで呼ぶ場合は、AppDelegateを以下にかいて呼び出す。 class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { FirebaseApp.configure() return true } @available(iOS 9.0, *) func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return GIDSignIn.sharedInstance.handle(url) } } var body: some Scene { WindowGroup { NewLogin() } } }
実際のログイン画面を実装する
googleSignIn関数でログイン処理を行います。
// ログインボタンの実装 Button(action: { googleSignIn() }, label: { Text("Googleアカウントでログインする") }) // ログインボタンをクリックした際の処理 func googleSignIn(){ guard let clientID = FirebaseApp.app()?.options.clientID else { return } // Create Google Sign In configuration object. let config = GIDConfiguration(clientID: clientID) // Start the sign in flow! GIDSignIn.sharedInstance.signIn(with: config, presenting: (UIApplication.shared.windows.first?.rootViewController)!) { user, error in if let error = error { print(error.localizedDescription) return } guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken) // Authenticate with Firebase using the credential object Auth.auth().signIn(with: credential) { (authResult, error) in if let error = error { print("authentication error \(error.localizedDescription)") return } print(authResult ?? "none") } } }
実際に動かしてみる
わかりやすくするために最初はFirebaseの管理画面上に登録アカウントがない状態にします。
ビルドすると以下のような画面になり、「Googleアカウントでログインする」ボタンをクリックし、ログイン画面が表示されます。
ログインして、Firebase Authenticationの管理画面を見ると、
以下のようにアカウントが登録されているのが確認できます。
▼ 以下でGoogleログインの実装をすることができる。Firebase Autenticationのヘルプページ
https://firebase.google.com/docs/auth/ios/google-signin?hl=ja
アカウントを削除する
ユーザーがアカウントを削除することも当然ありますので、登録したGoogleアカウントを削除するようにします。 続きを見る
削除については以下を参照してください。
仕組みとしてFirebase Authenticationで
IPASSでの会員登録にしても、Googleアカウントでの会員登録にしても結局登録先はFirebase Authenticationになります。
そのため、アカウント登録が完了した後の処理はIPASSでの処理と同じのため、
削除についてもIPASSの時と同じ処理になります。
削除はユーザーがログインしている状態で、アカウント削除できるようにします。
【Firebase】Firebase Authenticationを使いSwiftUIでログイン機能を実装する