得到"记住"选项与Firebase的auth匿名合作

时间:2014-11-03 01:37:55

标签: javascript firebase

我正在尝试使用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
        }
    }
}

我做错了什么还是这个错误?

1 个答案:

答案 0 :(得分:5)

每次调用FirebaseRef.authAnonymously(...)时,您都会创建一个新的身份验证会话。此方法只需要调用一次,之后用户将在页面刷新时进行身份验证。

如果您要检查用户的当前身份验证状态,并且 如果用户当前未通过身份验证,则创建新的身份验证会话,请使用同步访问者进行身份验证州FirebaseRef.getAuth()