видел много подобных проблем, но не может понять, как это исправить.
У меня есть экспресс-сервер, использующий сеансы cookie. Сервер вызывает Google Auth API.
Поскольку это приложение для нескольких пользователей, я должен связать информацию об авторизации Google с ssession пользователя
Я сохраняю эти данные авторизации в сеансе после получения их от Google.
Данные хорошо сохраняются в сеансе. Нет проблем здесь
Но после перенаправления на другой экспресс-маршрут сеанс отличается и поэтому не может получить доступ к сохраненным данным.
Вот код
Thks
app.use(
session({
name: SESSION_NAME,
secret: SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
maxAge: parseInt(SESSION_LIFETIME, 10), // 24H in config file
httpOnly: true,
sameSite: true,
secure: !IN_DEV
}
})
);
googleRouter.get("/oauthcallback", async (req, res) => {
try {
if (req.query.code && req.query.code !== "") {
const oauth2Client = initGoogleAuth();
const tokens = await getGoogleToken(oauth2Client, req.query.code);
if (tokens && tokens !== "") {
const s = await saveTokensInSession(req.session, tokens);
oauth2Client.setCredentials(tokens);
// save data in session
req.session.oauth2Client = oauth2Client;
req.session.save();
// oauth2Client is well saved here in session
console.log(req.session.oauth2Client);
//redirect to the next url
res.redirect("/googleauth/test");
} else res.send("error while getting tokens");
} else res.send("error while getting authorization code");
} catch (error) {
res.send(`error while getting token : ${error}`);
}
});
googleRouter.get("/test", async (req, res) => {
// oauth2Client is empty here and sessionID is different
console.log(req.session.oauth2Client);
});