Создать токен после поиска в Firebase - PullRequest
0 голосов
/ 20 июня 2020

Я хочу создать токен точно так же, как:

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. Есть ли способ сгенерировать этот токен и можно ли его использовать при маршрутизации по защищенному пути?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...