在Node.js上使用firebase.auth()。signInWithPhoneNumber + express

时间:2017-10-23 16:04:26

标签: javascript node.js express firebase firebase-authentication

我在尝试实施后端firebase授权时遇到了麻烦。 在我仔细阅读了文档(https://firebase.google.com/docs/auth/web/phone-auth)后,我发现授权需要通过两个步骤进行:

  1. 发送电话
  2. 发送代码
  3. 我将谷歌的例子分为两个承诺,但无法理解如何存储当前用户以及我是否以适当的方式完成了所有事情。

      app.post("/appSignInByPhone", (req, res) => {
            let {phoneNumber, applicationVerifier} = req.body;
            firebase.auth().signInWithPhoneNumber(phoneNumber, applicationVerifier)
                .then(() => res.end("Waiting for code"))
                .catch(
                    error => res.json(error)
                );
    });
    
    app.post("/appSignInPhoneVerify", (req, res) => {
            let {verificationCode} = req.body;
                firebase.auth.ConfirmationResult.confirm(verificationCode)
                .then( user => res.json(user))
                .catch(
                    error => res.json(error)
                );
    });
    

    也许有一些方法可以合并这些来请求一个......

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

在步骤#1中,存储或发回从履行处理程序获得的confirmationResult

    firebase.auth().signInWithPhoneNumber(phoneNumber, applicationVerifier)
        .then((confirmationResult) => {
               // either store confirmationResult 
               // or send it to the client and ask for it in step #2)
         }).catch(
            error => res.json(error)
        );

然后在第2步:

     // get the confirmationResult from the client or from some storage
     // in the server
     // for example let { verificationCode, confirmationResult } = req.body;
        confirmationResult.confirm(verificationCode)
        .then( user => res.json(user))
        .catch(
            error => res.json(error)
        );