#javascript #reactjs #cookies #firebase-authentication #next.js
# #javascript #reactjs #файлы cookie #firebase-аутентификация #next.js
Вопрос:
Я пытаюсь проверить, смог ли пользователь успешно завершить регистрацию. Для этого я хочу получить токен пользователя через файлы cookie, как в следующем коде:
[...]
export async function getServerSideProps(ctx) {
try {
const cookies = nookies.get(ctx)
console.log(JSON.stringify(cookies, null, 2));
const token = await firebaseAdmin.auth().verifyIdToken(cookies.token)
const { email } = token
return {
props: { message: `${email} was successfully registered!`}
}
} catch (err) {
console.log(err)
return { props: { message: 'Error'} }
}
}
[...]
Эта функция возвращает следующую ошибку:
errorInfo: { code: ‘auth / argument-ошибка’, сообщение: ‘Ошибка декодирования токена идентификатора Firebase. Убедитесь, что вы передали всю строку JWT, которая представляет токен ID. См. https://firebase.google.com/docs/auth/admin/verify-id-tokens для получения подробной информации о том, как получить идентификационный токен.’ }
Я считаю, что я, должно быть, неправильно использую nookies.get(ctx), и я говорю это, потому что полученный файл cookie (токен) равен «», что для меня не имеет особого смысла. Тогда, как я могу правильно использовать nookies для получения этого токена?
Я был бы признателен, если бы кто-нибудь мог помочь мне выяснить, что я упускаю. Заранее спасибо.
РЕДАКТИРОВАТЬ: учетная запись пользователя создана, а адрес электронной почты и пароль хранятся в аутентификации Firebase. Не работает только этот фрагмент кода.
Ответ №1:
Начиная со следующего 10.0.4, вы можете получать файлы cookie без nookies
const cookies = ctx.req.cookies
попробуйте таким образом, если вы все еще получаете токен как пустой, проверьте способ установки файлов cookie.