app.get("/auth/google", passport.authenticate("google", {
session: false,
scope: ["profile", "email"]
}));
passport.use(new GoogleStrategy({
clientID: " x",
clientSecret: " y",
callbackURL: "http://localhost:3000/auth/google/callback"
},
function(accessToken, refreshToken, Gprofile, done) {
process.nextTick(function() {
Gdata = {
'id': Gprofile.id,
'name': Gprofile.displayName,
'profileImage': Gprofile.photos[0].value,
'gender': Gprofile.gender,
'email': Gprofile.emails[0].value
};
console.log('Gdata recieved');
console.log('--------------------------------------------------------------------------');
return done(null, true); //It seems redirects to failureRedirect or successRedirect.
});
}
));
app.get("/auth/google/callback", passport.authenticate('google', {
session: false,
failureRedirect: "/google_callback_fail",
successRedirect: "/reports"
}));
app.get("/reports", function(req, res) {
// ------------DB
var db = require('../model/connection.js');
var stmt;
var name = Gdata.name.split(" ");
stmt = "INSERT INTO User(`first_name`, `last_name`, `email`) VALUES (?,?,?)";
var x = new Promise(function(resolve, reject) {
var sentToCJS;
db.query(stmt, [name[0], name[1], Gdata.email], function(err, rows) {
if (err) reject(err);
PAYLOAD = { userID: rows.insertId };
ENCODED_JWT = _jwt.sign(PAYLOAD, 'secret', { expiresIn: EXP_TIME });
console.log("1 ENCODED_JWT:", ENCODED_JWT);
sentToCJS = {
'jwt': ENCODED_JWT,
'name': Gdata.name,
'profileImage': Gdata.profileImage,
'gender': Gdata.gender,
'email': Gdata.email
};
console.log("sentToCJS:", sentToCJS);
//creates persistant cookie.
res.cookie("jwt", ENCODED_JWT, {
maxAge: 604800, //7days to ms
httpOnly: true,
sameSite: true,
signed: true //detects if user has modified the cookie
});
resolve(sentToCJS);
});
});
x.then(function(sentToCJS) {
res.render('reports', sentToCJS);
});
x.catch(function(error) {
console.log("error", error);
});
希望の結果:サーバーの応答cookieとレンダリング( 'reports'、sentToCJS); rescookieとres.renderが動作する必要があります。 どのようにサーバーのresponse.cookieとresponse.renderを一緒に送信するのですか?
エラー:送信後にヘッダーを設定できません。 at SendStream.headersAlreadySent
res.cookieとres.renderをまとめて、または複数のレスポンスで送信するにはどうすればよいですか? expressでは可能ではないようですが、node.js res.writeまたはwriteHeadメソッドで可能です。
これらの2つのステートメントは、単一の応答の一部です。あなたは2つの応答によって何を意味しますか? – Muthukumar
@Muthukumarエラーメッセージ –