我想知道在会话到期时是否有任何回调会触发(我正在使用带有$authWithPassword()
的Simplelogin)。我已经用谷歌进行了搜索并偶然发现了这个问题:https://groups.google.com/forum/#!topic/firebase-talk/btaE-hCVQdk
但是我不明白auth-Method的回调如何监听“Session expired”,因为它只执行一次(当用户登录时)。或者它的回调实际上是否有一个事件监听器?`
我尝试使用带有expires: ((new Date()).getTime() + 1000) / 1000
的选项参数来测试登录(它说,它需要一个以秒为单位的时间戳而不是毫秒)但我没有得到结果。
感谢任何帮助。
答案 0 :(得分:0)
我的解决方案:
(伪代码步骤,可以帮助完整的javascript)。
1.通过执行以下操作获取timeOffset(服务器/客户端):
1.1。在firebase-object(即在线列表)中登录ref.set()
clientTime(Date.now()
)和serverTime(Firebase.ServerValue.TIMESTAMP
)
1.2。成功读取两者并在ms中获得timeOffset
2. window.setTimeout()
使用受控制的注销功能(即unauth()
)并遵循超时值:
2.2微秒到超时:通过auth()
登录后得到authData.expires
,用它来计算expire-timeout-value:
authData.expires*1000 - Date.now()+that.serverTimeOffset - 2000
使用* 1000,因为authData.expires
以秒为单位
用户-2000,因为你必须加快unauth()
而不是firebase断开你:-)
我对这个解决方案非常满意。它适用于我的多人浏览器游戏。