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


在用于匿名身份验证的文档中,它说


  如果未指定-或将其设置为默认-会话将一直保留,直到您在Firebase仪表板的“登录和身份验证”选项卡中进行了配置。


我在设置中将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
        }
    }
}


我是在做错什么还是错误?

最佳答案

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

如果您要检查用户的当前身份验证状态,并且仅当用户当前未通过身份验证时才创建新的身份验证会话,请对身份验证状态FirebaseRef.getAuth()使用同步访问器。

关于javascript - 获取“记住”选项以使用Firebase的authAnonymously,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26706592/

10-09 14:00