我已经在 Unity 上使用 Firebase(身份验证、云存储等)近两年了,没有出现任何问题。
几个星期以来,当我在 Unity 中按下播放键时,出现错误 Missing or insufficient permissions
。经过调试,我发现当我调用时:
FirebaseFirestore.DefaultInstance.Collection("users").Document("userID")
.GetSnapshotAsync().ContinueWithOnMainThread(task => { ... });
task.IsFaulted
返回 true
,异常消息为 Missing or insufficient permissions
。
值得注意的是,在获取文档快照之前,登录过程已正确完成(Firebase 身份验证会自动登录用户)。
我所做的是在 FirebaseAuth.DefaultInstance.SignOut()
时添加 task.IsFaulted
并尝试再次登录,但我遇到了同样的错误。
但是,如果我在播放模式下等待几分钟,然后再次尝试登录,则没有错误,并且登录成功。因此,我不认为这是 Firebase 规则的问题,尤其是因为我最近没有更改任何内容。
我可以继续工作,但每次按下播放键尝试新功能时都要等待几分钟,这很麻烦。
你对我能做什么有什么想法吗?
我使用的是 Unity LTS 2019.4.22 和 Firebase 7.2.0
编辑:
当我在 iPhone 或 Android 上尝试时,而不是直接在编辑器中尝试时,问题不会发生。当我启动应用程序时,我会自动登录,并且正确获取了数据库中的 userData。
相反,在编辑器中,我自动登录,但是,当我尝试获取用户时,我得到了 Missing or insufficient permissions
。
我已经 Debug.Log 以确保用户在尝试获取数据库之前正确登录,
编辑 2:
这是创建这些日志的代码。
1 - 我初始化 Firebase 并监听 StateChanged
事件
2 - 当事件被触发时,我记录第一条消息,然后我检查用户是否登录,然后我用他的 id 记录第二条消息(我使用 Firebase documentation )
3 - 然后我尝试获取用户文档,如果 task.IsFaulted
,我退出,然后我记录错误消息