如何通过匿名身份验证保存到 Firebase 数据库 - 使用 Flutter
Posted
技术标签:
【中文标题】如何通过匿名身份验证保存到 Firebase 数据库 - 使用 Flutter【英文标题】:How to save, with anonymous authentication, to Firebase database - using Flutter 【发布时间】:2018-11-03 21:08:36 【问题描述】:在我使用匿名身份验证后,我的权限被拒绝
[ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter (21033): PlatformException(-3, Permission denied, )
...
_getCurrentUser: FirebaseUser(providerId: firebase, uid: DOIL...............u54j1, displayName: , email: , isAnonymous: true, isEmailVerified: false, providerData: [providerId: firebase, uid: DOIL//////////////54j1, displayName: , email: ])
我对 Firebase 数据库的规则是
"rules":
//Test rule
// "users":
// "$uid":
// ".read": "auth != null && auth.uid == $uid",
// ".write": "auth != null && auth.uid == $uid",
//
//
// General rule - closed to everyone but app uses
".read": "auth != null",
".write": "auth != null"
我用来保存数据的代码 - 与设置为对所有人开放的数据库规则一起工作正常。
_saveUserData(UserEntry userData) async
print("_saveUserData jsonData =" userData.toJson().toString());
// SAVE MY DATA TO DB
// tUsers = db reference to the child node users on Firebase
_tUsers.push().set(talentUserData.toJson());
我做错了什么?任何帮助表示赞赏。谢谢。
【问题讨论】:
"auth != null"
表示需要认证。您可以改用"true"
来允许匿名读/写,但要小心,因为这意味着任何拥有任何客户端应用程序的用户都可以修改您的firebase 数据。
@GünterZöchbauer 那么“匿名身份验证”的意义何在?
允许任何人(甚至是匿名的)阅读对于非敏感数据来说都很好。还允许匿名将某个结构的值写入某个路径可能是有意义的。仅允许匿名允许无限制地写入对您的应用程序是有害的,如果您运气不好并且有人滥用您的数据库来处理大量数据,也可能对您的财务造成危害。
【参考方案1】:
希望能免去一些人的头疼。我发现问题在于没有获得 Firebase 数据库的新实例。我在 main.dart 中创建了实例,并将其传递给构造函数中的 HomePage(根据库中的示例文件)。
当我得到一个新实例时...出于绝望调试...它起作用了。我现在可以匿名登录,这样只有安装了该应用程序的人才能写入数据库。
【讨论】:
以上是关于如何通过匿名身份验证保存到 Firebase 数据库 - 使用 Flutter的主要内容,如果未能解决你的问题,请参考以下文章
firebase react-native:通过电话身份验证将匿名用户转换为永久用户
如何将匿名 Firebase 凭据保存到本地存储以外的其他地方?