Как правильно преобразовать signInWithEmailAndPassword () в createCustomToken () в облачных функциях firebase - Node js - PullRequest
1 голос
/ 28 мая 2020

Я хочу продлить срок действия по умолчанию для токена пользователя в моем приложении. В настоящее время я использую функцию signInWithEmailAndPassword, где токен длится час.

Я знаю, что это можно сделать с помощью функции createcustomtoken, но я немного не понимаю, как go об этом. * Это моя текущая функция входа в систему:

exports.login = (req, res) => {
    const user = {
        email: req.body.email,
        password: req.body.password
    };

    firebase.auth().signInWithEmailAndPassword(user.email, user.password)
    .then((data) => {
        return data.user.getIdToken();
    })
    .then((token) => {
        return res.json({ token });
    })
    .catch((err) => {
        console.error(err);
            return res.status(403).json({ general: "Wrong credentials, please try again"})
    })
}

1 Ответ

1 голос
/ 29 мая 2020

К сожалению, невозможно увеличить время истечения срока действия более чем на 3600 секунд после возникновения проблемы в момент времени (iat).

В этом do c вы можете видеть, что exp явно говорит:

Это может быть максимум на 3600 секунд позже, чем iat.

пользовательский токен do c

Вы однако можно использовать токен refre sh, срок действия которого не истекает, для получения нового токена.

Refre sh token

Если вы все же хотите создать свой собственный токен, вы можете сделать что-то подобное:

const someJwt = jwtDecode<{ sub: string; email: string }>(someOtherTokenFromThirdParty)

// sub is the unique id for the apple user
const customToken = await admin.auth().createCustomToken(someJwt.sub, {
    ...extraClaims
})
...