我正在使用电子邮件密码用户授权并尝试实现“记住我”功能,但到目前为止还没有成功。
我尝试了 token 模式(电子邮件传递登录 --> 请求 firebase token --> 存储 token ,然后当用户使用 SignInWithCustomTokenAsync()
将 token 重放回服务器再次打开游戏),但每次都失败并显示异常消息
The custom token format is incorrect. Please check the documentation.
所以我的问题是,如果 Firebase token 被 Firebase 视为格式错误(我检查过它是一个有效的 JWT),那么您如何保持用户 session ?
当然,我可以将用户电子邮件和密码存储在 playerprefs
或其他任何地方,但这是一种糟糕的安全做法,我不会用 10 英尺长的杆子碰它。
最佳答案
这是一个老问题,但 Firebase 实际上会在 session 之间存储用户。您可以说“记住我”是默认内置的。您应该有一个附加到 FirebaseAuth.DefaultInstance.StateChanged
的监听器,它会在初始化完成后自动调用。如果 StateChanged
被调用并且 FirebaseAuth.DefaultInstance.CurrentUser != null
那么您已经登录并且可以自动跳过登录屏幕。
我不知道这是否是最佳做法,但我通常会在项目开始时出现“正在登录...”提示,该提示会持续 10 秒,然后才会显示登录屏幕。显然,如果 FirebaseAuth.DefaultInstance.StateChanged
提示登录,则 10 秒提前结束(通常在 1 秒内)。
关于c# - Firebase Unity 插件 : How do you persist user session?(自动登录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40765811/