c# - Firebase Unity 插件 : How do you persist user session?(自动登录)

标签 c# unity3d firebase firebase-authentication

我正在使用电子邮件密码用户授权并尝试实现“记住我”功能,但到目前为止还没有成功。

我尝试了 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/

相关文章:

android - 无法处理自定义 FirebaseInstanceIDService Android 中的刷新 token

c# - Xamarin Android 中选项卡更改前的验证

c# - 如何访问FlipView内DataTemplate内的xaml控件

c# - Unity错误中的SQLite

ios - Unity Facebook SDK FB.Feed 未发布

javascript - 使用 firebase 的应用程序/无应用程序错误

firebase - 如何在 Flutter 中设置不同的 firebase 环境

C# 相当于 Python 中的 "value error"

c# - 订户未阅读事件消息

c# - Unity 3D简单C#文件发送到FTP服务器示例脚本