我有一个用户可以登录或注册的本机应用程序,我使用firebase登录,但我不明白我应该对firebase.auth().signInWithEmailAndPassword(email, pass);
返回的对象做什么createUserWithEmailAndPassword(email, pass);
。
我应该使用它返回的参数之一吗?怎么样?
每个后端调用(我的后端不是firebase' s)应该与它返回的其中一个字符串有关吗?
我应该在本地存储上保存哪些字符串,以便用户不必再次登录?我设置firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL);
。
答案 0 :(得分:2)
我应该在本地存储上保存哪些字符串,以便用户不必再次登录?我设置
firebase.auth().setPersistence(firebase.auth.Auth.Persistence.LOCAL);
这可确保Firebase将身份验证令牌保留在本地存储中。你不需要做任何其他事情。当应用重新启动时,Firebase会自动在本地存储中找到令牌,并使用该信息对用户重新进行身份验证。
您很可能需要向onAuthStateChanged()
添加一个侦听器,以确保您可以将应用的UI更新为此身份验证状态。有关详情,请参阅Firebase文档中的getting the current user。
答案 1 :(得分:1)
如果是SPA(单页应用程序),则应使用firebase.auth().signInWithEmailAndPassword(email, pass);
中返回的对象来设置受保护应用程序页面中的用户名,电子邮件字段和显示照片。此外,由于用户处于登录状态,您可以在此承诺内显示私人链接。您还可以在此承诺内更新用户的个人资料。
如果是多页应用程序,您可以检查配置文件验证状态,然后根据相应的内容重定向到应用程序的主页。
您应该在后端获取ID令牌以识别有效请求
Firebase会自动将当前用户数据存储在本地存储中,直到用户注销或localStorage损坏(?)为止。您可以通过firebase auth在Safari隐私浏览模式下不起作用来确认这一点,因为它不支持localStorage方法。 简而言之,您无需执行任何操作即可确保数据在localStorage中保留,Firebase使用onAuthStaeChanged事件侦听器为所有已注册设备上的给定用户切换登录阶段。