firebase.auth().在Web应用程序上未定义createCustomToken

Lio*_*eld 2 javascript firebase firebase-authentication

我正在尝试为使用Firebase的网络应用创建"记住我"功能.

我的目标是当用户点击"记住我"并成功登录时,他们的身份验证令牌将使用localStorage存储,并且他们会在下次访问时自动登录(我更喜欢将其原始凭据存储在localStorage中以用于安全目的).

但是,当我试图打电话时,firebase.auth().createCustomToken我得到一个错误,说它不存在.这是错误的方法还是错误的函数调用firebase?谢谢!

以下是我的代码示例:

var customToken = firebase.auth().createCustomToken(user.uid);
localStorage.setItem("savedToken", customToken);
Run Code Online (Sandbox Code Playgroud)

然后我打算用这条线重新登录:

firebase.auth().signInWithCustomToken(localStorage.getItem("savedToken")).then(function() {
Run Code Online (Sandbox Code Playgroud)

qxz*_*qxz 5

firebase.auth().createCustomToken 仅在服务器API中可用.

要使用电子邮件和密码进行身份验证并获取会话令牌,请尝试以下操作:

firebase.auth().signInWithEmailAndPassword(email, password)
  .then(function(user) {
    user.getToken().then(function(token) {
      localStorage.setItem("savedToken", token); // store the token
    });
  })
  .catch(function(error) {
    // handle error...
  });
Run Code Online (Sandbox Code Playgroud)

这也适用于其他身份验证方法; 只是用User.getToken.稍后,如果您有令牌(仍在客户端上),并且您想要使用它进行身份验证,那么只需执行您当前正在执行的操作:

var token = localStorage.getItem("savedToken"); // get stored token
firebase.auth().signInWithCustomToken(token).catch(function(error) {
  // handle error...
});
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,因为signInWithCustomToken只适用于您的服务器铸造的令牌createCustomToken.我不确定如何使用电子邮件/密码令牌进行身份验证.