我正在尝试使用Firebase的anonymous authentication来存储有关访问我网站的用户的数据。但是我无法按照描述使其工作。
以下是相关代码的简化摘录:
var firebase_root = new Firebase('https://example.firebaseio.com');
firebase_root.authAnonymously(function(error, authData) {
var page = firebase_root.child(uid).push(); // create a unique reference for this pageload
page.child('loaded_page').set(Firebase.ServerValue.TIMESTAMP);
page.child('left_page').onDisconnect().set(Firebase.ServerValue.TIMESTAMP);
});
在匿名身份验证的文档中,它说
如果未指定 - 或设置为默认值 - 只要您在Login& amp;中配置,会话就会保留。 Firebase仪表板的Auth选项卡。
我已将Session Length
设置为12个月,因此我希望如果我加载此页面然后刷新页面,我会得到这样的结构:
{
someRandomUserId: {
randomPageId_1: {
loaded_page: timestamp_1,
left_page: timestamp_2
},
randomPageId_2: {
loaded_page: timestamp_3
}
}
}
但看起来它实际上是在重新分配用户ID而不是在页面加载中持久化。所以我实际上得到了这样的结构:
{
someRandomUserId_1: {
randomPageId_1: {
loaded_page: timestamp_1,
left_page: timestamp_2
}
},
someRandomUserId_2: {
randomPageId_2: {
loaded_page: timestamp_3
}
}
}
我做错了什么还是这个错误?
答案 0 :(得分:5)
每次调用FirebaseRef.authAnonymously(...)
时,您都会创建一个新的身份验证会话。此方法只需要调用一次,之后用户将在页面刷新时进行身份验证。
如果您要检查用户的当前身份验证状态,并且仅 如果用户当前未通过身份验证,则创建新的身份验证会话,请使用同步访问者进行身份验证州FirebaseRef.getAuth()
。