Firebase 意外地坚持匿名身份验证,可用于 onAuthStateChanged
Firebase unexpectedly persisting anonymous auth, available with onAuthStateChanged
我一直在为 React Native 应用程序使用 Firebase 匿名身份验证,主要是为了确保用户只能 read/write 他们自己的数据(例如检查 auth && auth.uid
安全规则)
以前,使用 Firebase 2.4.2,我的身份验证方案如下:
用户注册
firebaseRef.authAnonymously((error, authData) => {
if (error) {
// handle error
} else {
// store the token on device
store(authData.token);
}
});
每当用户稍后打开应用程序时,使用存储的令牌创建一个会话
firebaseRef.authWithCustomToken(storedToken, (error) => {
if (error) {
// handle errors
} else {
// proceed
}
});
Firebase 2.4.2 中匿名身份验证返回的令牌似乎适用于自定义身份验证。
升级到 Firebase 3.1 后,此流程不再有效——具体来说,尝试使用 signInAnonymously
生成的令牌创建 signInWithCustomToken
会话 returns 错误 auth/invalid-custom-token
.
但是,没有持久会话的问题似乎已经消失了。现在,使用 Firebase 3.1:
用户注册
firebase.auth().signInAnonymously().then(user => {
// store token
user.getToken().then(token => store(token))
});
每当用户稍后打开应用程序时,会话仍然可用并调用此侦听器
firebase.auth().onAuthStateChanged(user => {
// user is still authenticated
});
我不清楚这是如何工作的,Firebase 如何保持会话?
在 Firebase 2.x 版本 JavaScript SDK 身份验证适用于 React Native,但会话信息不会在运行之间的任何地方保留。这样做的原因是本地存储(Firebase 用于在浏览器中保存此信息)在 React Native 中不可用。
在 Firebase 的 3.0 版中 JavaScript SDK 身份验证不再适用于 React Native。
从 Firebase 的 3.1 版开始 JavaScript SDK 身份验证再次适用于 React Native。会话详细信息保存在 React Native's Async Storage.
中
我一直在为 React Native 应用程序使用 Firebase 匿名身份验证,主要是为了确保用户只能 read/write 他们自己的数据(例如检查 auth && auth.uid
安全规则)
以前,使用 Firebase 2.4.2,我的身份验证方案如下:
用户注册
firebaseRef.authAnonymously((error, authData) => { if (error) { // handle error } else { // store the token on device store(authData.token); } });
每当用户稍后打开应用程序时,使用存储的令牌创建一个会话
firebaseRef.authWithCustomToken(storedToken, (error) => { if (error) { // handle errors } else { // proceed } });
Firebase 2.4.2 中匿名身份验证返回的令牌似乎适用于自定义身份验证。
升级到 Firebase 3.1 后,此流程不再有效——具体来说,尝试使用 signInAnonymously
生成的令牌创建 signInWithCustomToken
会话 returns 错误 auth/invalid-custom-token
.
但是,没有持久会话的问题似乎已经消失了。现在,使用 Firebase 3.1:
用户注册
firebase.auth().signInAnonymously().then(user => { // store token user.getToken().then(token => store(token)) });
每当用户稍后打开应用程序时,会话仍然可用并调用此侦听器
firebase.auth().onAuthStateChanged(user => { // user is still authenticated });
我不清楚这是如何工作的,Firebase 如何保持会话?
在 Firebase 2.x 版本 JavaScript SDK 身份验证适用于 React Native,但会话信息不会在运行之间的任何地方保留。这样做的原因是本地存储(Firebase 用于在浏览器中保存此信息)在 React Native 中不可用。
在 Firebase 的 3.0 版中 JavaScript SDK 身份验证不再适用于 React Native。
从 Firebase 的 3.1 版开始 JavaScript SDK 身份验证再次适用于 React Native。会话详细信息保存在 React Native's Async Storage.
中