Я хочу создать токен точно так же, как:
firebase.auth().signInWithEmailAndPassword(user.email,user.password)
.then(data => {
return data.user.getIdToken();
})
.then(token => {
return res.json({token});
})
.catch(err => {
console.error(err);
if(err.code === 'auth/wrong-password'){
errors.password = "Wrong Credential; Please try again."; // un-authorize
return res.status(403).json(errors);
}
else if(err.code === 'auth/user-not-found'){
errors.email = "There is no user record corresponding to this identifier. The user may have been deleted."; // un-authorize
return res.status(403).json(errors);
}
return res.status(500).json({error : err.code});
})
В этом сценарии я получу токен, как только я войду с правильным именем пользователя и паролем. Мне нужен тот же сценарий (генерирование токена), когда я выполняю поиск в базе данных и добился следующего успеха:
db.collection('users').where('phoneNo', '==', req.body.phoneNo)
.get()
// .then(data => {
// let users = [];
// data.forEach(doc => users.push(doc.data()))
// return res.json(users);
// })
.then(data => {
return data.user.getIdToken();
})
.then(token => {
return res.json({token});
})
.catch(err => {
console.error(err);
return res.status(500).json({ error : err.code});
})
Но вот я получаю:
TypeError: Cannot read property 'getIdToken' of undefined
. Есть ли способ сгенерировать этот токен и можно ли его использовать при маршрутизации по защищенному пути?