🐷

Firebaseの認証機能を利用してサーバーサイドでユーザー操作を行う

2023/12/14に公開

今回、初めてfirestore以外でのユーザー操作を行い、参考サイトが少なかったので書いてみました!

Firebaseでの認証を行い、登録されているユーザーに対して操作を行う時のFirebaseのモジュールの使用方法です。今回は使用した言語がPythonのため、Pythonでの書き方を中心に行います。

Firebaseの認証機能を導入済みの方が対象です。

Firebaseの認証機能とは

Firebaseはクラウドベースのプラットフォームであり、ユーザーの認証やデータベースの管理など、さまざまな機能を提供しています。サーバーサイドでユーザー操作を行うためには、まずFirebaseの認証機能を設定する必要があります。

Firebaseの認証機能を使用することで、ユーザーを登録し、ログイン、ログアウトなどの操作を簡単に行うことができます。また、Firebaseのデータベースを使用することで、ユーザーの情報を保存し、必要なデータを取得することもできます。

Firebaseの認証機能を利用してサーバーサイドでユーザー操作を行うことで、安全かつ効率的なユーザー管理が可能となります。

Firebaseに用意されているモジュール

firebase_admin

https://firebase.google.com/docs/reference/admin/python/firebase_admin.auth

主な使用方法

認証機能を使用してGoogleアカウントでの認証を行なったり、登録されたユーザーの確認、操作を行うことができます。

Firebaseの認証機能を利用すると、サーバーサイドでユーザー操作を行うことができます。

ユーザーの操作を行うにはUIDを使用した操作が求められます。

UIDを取得し、そのUIDを使用して該当ユーザーに対して操作を行います。

まずfirebase_admin モジュールをimportして、firebase_admin.initialize_app() でSDKを初期化してから使用します。

この時に複数回SDKの初期化を行おうとすると、エラーを吐くので注意してください

Firebase Admin の二重初期化エラーの対策(modular版)Zenn

Firebaseに登録されているユーザー情報に対して更新を行う

Firebaseのユーザーを特定するためにDBに対して一意のデータを取得する。

Firebaseのユーザー検索で使用できるのは、電話番号(phoneNumber)、メールアドレス(email)、uidになります。FirebaseのuidをDBに保存していない限り、phoneNumberかemailの二択になるかと思いますので、ここではemailを取得する方法で行います。

ちなみに、ユーザーに対しての更新でemailを使用することはできません。

通常通りuserテーブルからemailを取得します

def get_user_email(user_id : int):
	user_email = db.query(User.email).filter(User.id == user_id).one()

取得したemailを使用して、Firebaseに対してユーザー検索を行います。

from firebase_admin import auth

def get_user_by_email(user_email: string)
user = firebase_admin.auth.get_user_by_email(user_email)

この時、受け取る値としては

{
	uid: 該当ユーザーのuid,
	display_name: 該当ユーザーの氏名,
	email: 該当ユーザーのemail
}

が取得することができます

firebase_admin.auth.get_user_by_email() を使用して得たuidを使用してFirebaseのユーザー情報に対して操作を行います

使用例として削除処理を行います。

firebase_admin.auth.delete_user(uid) uidの部分に引数として上記で取得したuid

を渡してメソッドを実行します

そうするとFirebaseコンソールでユーザーの削除が行えているかと思います。

削除したくない方はfirebase_admin.auth.update_user(uid) で更新処理を試してみてください。

以上、Firebaseでのユーザー操作でした。

こちらの記事はアルサーガパートナーズアドベントカレンダーの14日目の記事です。
他の記事は下記リンクをご参照ください

https://qiita.com/advent-calendar/2023/arsaga

Arsaga Developers Blog

Discussion