Я пытаюсь реализовать стратегию Google с Passport (Node.js) для аутентификации пользователя, но по какой-то причине мне нужно сделать это с JWT вместо использования функций сериализации, которые полезны только тогда, когда используется cook ie.
Я запускаю аутентификацию с помощью:
<a href={process.env.REACT_APP_API_URL + '/google/auth'}>Sign in with Google</a>
Затем на бэкэнде (node.js) У меня есть конфиг:
passport.use(
new GoogleStrategy(
{
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOCLE_CLIENT_SECRET,
callbackURL: '/google/auth/callback',
proxy: true,
},
async (accessToken, refreshToken, profile, done) => {
// save user in db
await done(null, userData);
}
)
);
И маршруты:
app.get('/google/auth', passport.authenticate('google', {
scope: ['profile', 'email'],
prompt: 'select_account',
}));
app.get(
'/google/auth/callback',
passport.authenticate('google', { session: false }),
(req, res) => {
// create JWT and send it to the client
res.send({ token });
}
);
По моему маршруту обратного вызова в браузере я вижу, что токен есть (это localhost:5000/google/auth/callback?code=123412341234
). Я не могу понять, как я могу использовать его на стороне клиента, ie. Как я могу извлечь его из этого маршрута и сохранить его в localStorage, чтобы использовать его в следующих запросах.