关于 firebase-auth-basics
firebase-auth-basics 是一个 Firebase Authentication 入门 Skill,介绍用户、身份提供方与令牌等核心概念,并说明如何通过 firebase.json 与 CLI 配置认证。它适合为应用接入用户登录的开发者使用。
主要功能
- 01说明用户与 uid 等核心概念
- 02列出多种身份提供方
- 03通过 firebase.json 配置认证并部署
- 04提供 Web、Flutter、Android、iOS 客户端指引
- 05说明基于 request.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),且保证在所有提供方中均唯一。用户属性包括:
uid:唯一标识符。email:用户的电子邮件地址(如果有)。displayName:用户的显示名称(如果有)。photoURL:用户照片的 URL(如果有)。emailVerified:表示电子邮件是否已验证的布尔值。
身份提供方
Firebase Auth 支持多种登录方式:
- 电子邮件/密码:基本的电子邮件和密码身份验证。
- 联合身份提供方:Google、Facebook、Twitter、GitHub、 Microsoft、Apple 等。
- 电话号码:基于 SMS 的身份验证。
- 匿名:临时访客账号,之后可以关联到永久账号。
- 自定义身份验证:与现有身份验证系统集成。
建议将 Google Sign In 作为良好且安全的默认提供方。
令牌
用户登录后,会获得一个 ID Token(JWT)。此令牌用于在向 Firebase 服务(Realtime Database、 Cloud Storage、Firestore)或自有后端发出请求时识别用户。
- ID Token:有效期较短(1 小时),用于验证身份。
- Refresh Token:有效期较长,用于获取新的 ID Token。
工作流
1. 配置
选项 1:通过 CLI 启用身份验证
只有 Google Sign In、匿名身份验证和电子邮件/密码身份验证可以通过 CLI 启用。其他提供方请使用 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],这表示该域名未获授权。进行本地开发时,请将http://localhost添加到firebase.json中的authorizedRedirectUris(或确保 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 保护数据。