设置和使用 Firebase Authentication 的指南。当用户的应用需要用户登录、用户管理或使用身份验证规则保护数据访问时,使用此技能。
前提条件
- 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:布尔值,指示电子邮件是否已验证。
身份提供者
Firebase Auth 支持多种登录方式:
- 电子邮件/密码:基本的电子邮件和密码身份验证。
- 联合身份提供者:Google、Facebook、Twitter、GitHub、Microsoft、Apple 等。
- 手机号码:基于短信的身份验证。
- 匿名:临时访客账户,以后可关联到永久账户。
- 自定义身份验证:与您现有的身份验证系统集成。
建议使用 Google 登录作为良好且安全的默认提供者。
令牌
用户登录后,会收到一个 ID 令牌(JWT)。该令牌用于在向 Firebase 服务(实时数据库、Cloud Storage、Firestore)或您自己的后端发出请求时标识用户。
- ID 令牌:短期有效(1 小时),用于验证身份。
- 刷新令牌:长期有效,用于获取新的 ID 令牌。
工作流程
1. 配置
选项 1:通过 CLI 启用身份验证
只有 Google 登录、匿名身份验证和电子邮件/密码身份验证可以通过 CLI 启用。对于其他提供者,请使用 Firebase 控制台。
通过在 firebase.json 中添加 'auth' 块来配置 Firebase Authentication:
{
"auth": {
"providers": {
"anonymous": true,
"emailPassword": true,
"googleSignIn": {
"oAuthBrandDisplayName": "您的品牌名称",
"supportEmail": "support@example.com",
"authorizedRedirectUris": ["https://example.com", "http://localhost"]
}
}
}
}
[!注意]
如果 Google 登录弹出窗口打开后立即关闭并显示错误[firebase_auth/unauthorized-domain],则表示该域名未授权。
对于本地开发,请确保localhost包含在 Firebase 控制台的授权域名列表中,或通过firebase.json中的authorizedDomains字段包含。
关键:不要在授权域名列表中包含协议或端口号(例如,使用localhost,而不是http://localhost:9090)。
关键:配置 firebase.json 后,您必须将身份验证配置部署到 Firebase 后端,以使更改生效。这对于 Google 登录、电子邮件/密码等身份验证提供者自动生成应用平台所需的 OAuth 客户端至关重要。运行:
npx -y firebase-tools@latest deploy --only auth
选项 2:在控制台中启用身份验证
在 Firebase 控制台中启用其他提供者。
- 转到 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。
3. 安全规则
使用 Firestore/Storage 规则中的 request.auth 保护您的数据。






