我在尝试实施后端firebase授权时遇到了麻烦。 在我仔细阅读了文档(https://firebase.google.com/docs/auth/web/phone-auth)后,我发现授权需要通过两个步骤进行:
我将谷歌的例子分为两个承诺,但无法理解如何存储当前用户以及我是否以适当的方式完成了所有事情。
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)
);
});
也许有一些方法可以合并这些来请求一个......
答案 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)
);