查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。
了解详情
发送反馈
使用自定义身份验证系统进行 Firebase 身份验证
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
您可以通过修改身份验证服务器,在用户成功登录时生成自定义的签名令牌,将 Firebase Authentication 与自定义身份验证系统集成。您的应用会接收此令牌并将其用于 Firebase 身份验证。
准备工作
按照使用入门 指南中的步骤操作(如果您尚未这样做)。
安装和配置 Firebase Admin SDK 。请务必使用 Firebase 项目的正确凭据初始化 SDK 。
进行 Firebase 身份验证
当用户登录您的应用时,将其登录凭据(例如,其用户名和密码)发送到您的身份验证服务器。您的服务器会检查凭据,如果凭据有效,则会创建自定义 Firebase 令牌 并将令牌发回您的应用。
从身份验证服务器收到自定义令牌后,请将该令牌传递给 signInWithCustomToken()
以完成该用户的登录:
try {
final userCredential =
await FirebaseAuth.instance.signInWithCustomToken(token);
print("Sign-in successful.");
} on FirebaseAuthException catch (e) {
switch (e.code) {
case "invalid-custom-token":
print("The supplied token is not a Firebase custom auth token.");
break;
case "custom-token-mismatch":
print("The supplied token is for a different Firebase project.");
break;
default:
print("Unkown error.");
}
}
后续步骤
用户创建新帐号后,此帐号会存储为您的 Firebase 项目的一部分,无论用户使用哪种登录方法,您都可以使用此帐号在您项目中的每个应用中识别该用户。
在您的应用中,您可以从 User
对象获取用户的基本个人资料信息。请参阅管理用户 。
在您的 Firebase Realtime Database 和 Cloud Storage 安全规则中,您可以从 auth
变量获取已登录用户的唯一用户 ID,然后用其控制用户可以访问哪些数据。
您可以将身份验证服务提供方凭据关联至现有用户帐号 ,让用户可以使用多个身份验证服务提供方登录您的应用。
如需让用户退出登录,请调用 signOut()
:
await FirebaseAuth.instance.signOut();
发送反馈
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可 获得了许可,并且代码示例已根据 Apache 2.0 许可 获得了许可。有关详情,请参阅 Google 开发者网站政策 。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2023-06-21。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
需要向我们提供更多信息?
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2023-06-21\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2023-06-21。"]]