![見出し画像](https://assets.st-note.com/production/uploads/images/98622876/rectangle_large_type_2_5994436daf60baeb979d971e3994be52.png?width=1200)
Firebase Authentication によるログイン機能を試す - iOS版
「Firebase Authentication」によるログイン機能を試したのでまとめました。
1. Firebase Authentication
「Firebase Authentication」安全なログイン機能を提供するFirebaseのサービスです。メールアドレスとパスワードの組み合わせ、電話認証、Google、Twitter、Facebook、GitHubログインなどに対応しています。
2. Firebaseプロジェクトの準備
Firebaseプロジェクトの準備手順は、次のとおりです。
(1) Firebaseのコンソールでプロジェクトを作成。
(2) 「アプリを追加」ボタンを押し、「iOS」を選択。
![](https://assets.st-note.com/img/1677041250899-Jwmf25DhD8.png?width=1200)
(3) 「バンドルID」と「アプリのニックネーム」を指定して、「アプリを登録」ボタンを押す。
![](https://assets.st-note.com/img/1677041263796-zd6Xk4JGFk.png?width=1200)
(4) 「GoogleService-Info.plistをダウンロード」ボタンで「GoogleService-Info.plist」ダウンロードし、Xcodeプロジェクトのルートにドラッグ&ドロップして全ターゲットに追加し、「次へ」ボタンを押す。
![](https://assets.st-note.com/img/1677041273414-PDGhIyAQ5A.png?width=1200)
(5) Xcodeの「PROJECT」の「Package Dependencies」の「+」を押し、右上に以下のURLを入力し、「firebase-ios-sdk」を選択し、「Add Package」ボタンを押す。
https://github.com/firebase/firebase-ios-sdk
![](https://assets.st-note.com/img/1677041294406-yl0KXOtbuP.png?width=1200)
![](https://assets.st-note.com/img/1677041302829-gdB4EMGklp.png?width=1200)
(6) パッケージプロダクトの選択で、「FirebaseAnalytics」を選択し、「Add Package」ボタンを押す
(7) 「AppDelegate.swift」にFirebaseの初期化コードを追加。
import UIKit
import FirebaseCore // Firebaseのパッケージ宣言も追加
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
// アプリ起動時に呼ばれる
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Firebaseの初期化コード
FirebaseApp.configure()
return true
}
:
}
3. Firebaseコンソールでのログイン機能の準備
Firebaseコンソールでのログイン機能の準備手順は、次のとおりです。
(1) 「Firebaseコンソール」で「Authentication」を選択し、「ログイン方法を設定」ボタンを押す。
![](https://assets.st-note.com/img/1677048014545-KTVc5wGOAD.png?width=1200)
(2) 追加するログイン方法として「Google」を選択。
![](https://assets.st-note.com/img/1677048110616-sQrZ6FIWwb.png?width=1200)
(2) 有効化し、プロジェクト公開名とプロジェクトサポートメールを入力し、保存ボタンを押す。
![](https://assets.st-note.com/img/1677048221700-mf3KeurieQ.png?width=1200)
4. Xcodeでのログイン機能の準備
Xcodeでのログイン機能の準備手順は、次のとおりです。
(1) Xcodeの「PROJECT」の「Package Dependencies」の「+」を押し、右上に以下のURLを入力し、「FirebaseUI-iOS」の最新バージョンを指定し (しないと古いバージョンが選択された) 、「Add Package」ボタンを押す。
https://github.com/firebase/FirebaseUI-iOS.git
![](https://assets.st-note.com/img/1677048968980-5n3uVHIaYo.png?width=1200)
(2) パッケージプロダクトの選択で、以下を選択し、「Add Package」ボタンを押す。
・FirebaseAuthUI
・FirebaseGoogleAuthUI
ログイン方法によって、追加すべきパッケージプロダクトが変わります。
(3) Xcodeの「TARGETS」の「Info → URL Type」で「+」をクリックし、「URL Schemes」に「GoogleService-Info.plist」の「REVERSED_CLIENT_ID」をコピー&ペースト。
![](https://assets.st-note.com/img/1677049593190-N5WG3MUKpv.png?width=1200)
(4) コードを以下のように編集。
・ViewController.swift
import UIKit
import FirebaseAuthUI
import FirebaseGoogleAuthUI
class ViewController: UIViewController, FUIAuthDelegate {
// ロード時に呼ばれる
override func viewDidLoad() {
super.viewDidLoad()
}
// 認証ボタン
@IBAction private func onAuthButton(_ sender: UIButton) {
// 認証
let authUI = FUIAuth.defaultAuthUI()!
authUI.delegate = self
let providers: [FUIAuthProvider] = [
FUIGoogleAuth(authUI: authUI)
]
authUI.providers = providers
let authViewController = authUI.authViewController()
self.present(authViewController, animated: true)
}
// 認証の結果取得時に呼ばれる
internal func authUI(_ authUI: FUIAuth,
didSignInWith authDataResult: AuthDataResult?, error: Error?) {
// 成功
if let user = authDataResult?.user {
// ユーザー情報の確認
print("uid:", user.uid)
print("displayName:", user.displayName ?? "")
print("photoURL:", user.photoURL ?? "")
}
// 失敗
if let error = error {
print("error:", error.localizedDescription)
}
}
}
認証後は、ユーザー情報をauthDataResult.userで取得できます。
・user.uid : ユニークID
・user.email : メール
・user.displayName : 表示名
・user.photoURL : アイコン画像URL
(5) Storyboardにボタンを追加し、onAuthButton()に関連付ける。
![](https://assets.st-note.com/img/1677049801558-4EbhoczlZq.png?width=1200)
5. アプリの実行
アプリの実行手順は次のとおりです。
(1) アプリを起動して、「Auth」ボタンを押し、「Sign in with Google」ボタンを押し、Googleアカウントでログイン。
![](https://assets.st-note.com/img/1677050162890-8M6VYAaxkh.png?width=1200)
(2) Xcodeのコンソールでログイン結果を確認。
成功時にはユーザー情報、失敗時にはエラーメッセージを表示するようにしています。
uid: <ユニークID>
email: <メールアドレス>
displayName: <表示名>
photoURL: <アイコン画像URL>
6. ユーザー情報
ログイン中は、Auth.auth().currentUserでユーザー情報を取得できます。ログイン中かどうかの判定にも利用できます。
import FirebaseAuth
if let user = Auth.auth().currentUser {
print("uid:", user.uid)
if let displayName = user.displayName {
print("displayName:", displayName)
}
if let photoURL = user.photoURL {
print("photoURL:", photoURL)
}
}
7. ログアウト
Auth.auth().signOut()でログアウトできます。
Ado {
try Auth.auth().signOut()
} catch {
print(error)
}
この記事が気に入ったらサポートをしてみませんか?