firebase-auth-basics について
firebase-auth-basics は Firebase Authentication の入門向け Skill であり、ユーザー、IDプロバイダー、トークンなどの基本概念を扱います。firebase.json と CLI による認証設定方法を説明し、アプリにサインイン機能を追加する開発者に向けた内容です。
主な機能
- 01ユーザーと uid などの基本概念
- 02対応する IDプロバイダーの一覧
- 03firebase.json による認証設定とデプロイ
- 04Web、Flutter、Android、iOS のクライアント手順
- 05request.auth を用いたセキュリティルール
活用シーン
- 01アプリへのメールまたは Google サインインの追加
- 02承認されていないドメインによるログインエラーの解決
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ firebase/ agent-skills --skill firebase-auth-basicsインストール後、Claude Code で/firebase-auth-basicsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/client_sdk_android.mdclient_sdk_web.mdflutter_setup.mdios_setup.mdsecurity_rules.md詳細
前提条件
- Firebase プロジェクト:
npx -y firebase-tools@latest projects:createを使って作成します(firebase-basicsを参照)。 - Firebase CLI:インストールしてログインします(
firebase-basicsを参照)。
基本概念
Firebase Authentication は、アプリのユーザーを認証するためのバックエンドサービス、使いやすい SDK、すぐに使える UI ライブラリを提供します。
ユーザー
ユーザーとは、アプリにサインインできるエンティティです。各ユーザーには、一意性が保証された固有の ID(uid)が割り当てられます。この ID はすべてのプロバイダーにわたって一意です。ユーザーのプロパティには次のものがあります。
uid:一意の識別子。email:ユーザーのメールアドレス(利用可能な場合)。displayName:ユーザーの表示名(利用可能な場合)。photoURL:ユーザーの写真の URL(利用可能な場合)。emailVerified:メールアドレスが確認済みかどうかを示すブール値。
ID プロバイダー
Firebase Auth では、複数のサインイン方法がサポートされています。
- メールアドレス/パスワード:基本的なメールアドレスとパスワードによる認証。
- フェデレーション ID プロバイダー:Google、Facebook、Twitter、GitHub、Microsoft、Apple など。
- 電話番号:SMS ベースの認証。
- 匿名:後で永続アカウントにリンクできる一時的なゲストアカウント。
- カスタム認証:既存の認証システムと統合します。
Google Sign In は、安全で使いやすいデフォルトのプロバイダーとして推奨されます。
トークン
ユーザーがサインインすると、ID トークン(JWT)が発行されます。このトークンは、Firebase サービス(Realtime Database、Cloud Storage、Firestore)や独自のバックエンドにリクエストを送信する際、ユーザーの識別に使用されます。
- ID トークン:有効期間が短く(1 時間)、本人確認に使用されます。
- リフレッシュトークン:有効期間が長く、新しい ID トークンの取得に使用されます。
ワークフロー
1. プロビジョニング
オプション 1. CLI で認証を有効にする
CLI で有効にできるのは、Google Sign In、匿名認証、メールアドレス/パスワード認証のみです。その他のプロバイダーは Firebase Console を使用してください。
firebase.json に「auth」ブロックを追加して、Firebase Authentication を設定します。
{
"auth": {
"providers": {
"anonymous": true,
"emailPassword": true,
"googleSignIn": {
"oAuthBrandDisplayName": "Your Brand Name",
"supportEmail": "[email protected]",
"authorizedRedirectUris": [
"https://my-project-id.firebaseapp.com/__/auth/handler",
"http://localhost"
]
}
}
}
}
メモ
Google Sign-In のポップアップが開いてすぐに閉じ、エラー
[firebase_auth/unauthorized-domain]が表示される場合は、そのドメインが許可されていないことを意味します。ローカル開発では、firebase.jsonのauthorizedRedirectUrisにhttp://localhostを追加してください(または、Firebase Console の Authentication > Settings > Authorized domains にある Authorized Domains リストにlocalhostが含まれていることを確認してください)。重要:authorizedRedirectUrisにポート番号を含めないでください(例:http://localhostを使用し、http://localhost:9090やhttp://localhost:4000は使用しないでください)。また、Console の Authorized Domains リストにはプロトコルやポート番号を含めず、localhostを使用してください。authorizedRedirectUrisにポート番号を含めると、firebase deploy --only authがINVALID_AUTHORIZED_DOMAINで失敗します。
重要:firebase.json の設定後、変更を反映するには、認証設定を Firebase バックエンドにデプロイする必要があります。これは、Google Sign-In やメールアドレス/パスワードなどの認証プロバイダーが、アプリのプラットフォームに必要な OAuth クライアントを自動生成するうえで不可欠です。次のコマンドを実行します。
npx -y firebase-tools@latest deploy --only auth
オプション 2. Console で認証を有効にする
Firebase Console でその他のプロバイダーを有効にします。
- 次のページに移動します。 https://console.firebase.google.com/project/_/authentication/providers
- プロジェクトを選択します。
- 目的のサインインプロバイダー(例:メールアドレス/パスワード、Google)を有効にします。
2. クライアントのセットアップと使用方法
Web:references/client_sdk_web.md を参照してください。
Flutter:references/flutter_setup.md を参照してください。 Android(Kotlin): references/client_sdk_android.md を参照してください。
iOS(Swift):references/ios_setup.md を参照してください。
3. セキュリティルール
Firestore/Storage のルールで request.auth を使ってデータを保護します。
references/security_rules.md を参照してください。