Express.js中Passport Google OAuth2.0策略RefreshToken为undefined问题
Google OAuth2 Passport策略中refreshToken变为undefined的问题
此前我的Passport OAuth2策略能正常获取accessToken和refreshToken,但现在refreshToken莫名变成了undefined。清除浏览器缓存/Cookie后仅能正常一次,之后又会恢复为undefined。我已经在Google Cloud Console重置了OAuth设置并更新了clientId,但问题依旧,且官方文档中找不到相关说明。
我的passport.js代码:
passport.use( new GoogleStrategy( { clientID: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, callbackURL: "/auth/google/callback", refreshToken: true, // 此处应获取refreshToken }, function (accessToken, refreshToken, profile, done) { // 用户完成授权、授权码兑换为accessToken时触发此函数 console.log("Myprofile: ", profile); console.log("REFRESHTOKEN: ", refreshToken); // 这里输出undefined done(null, { profile, accessToken, refreshToken }); } ) ); passport.serializeUser((user, done) => { console.log("myPre user: ", user); done(null, user); }); passport.deserializeUser((user, done) => { console.log("my user: ", user); done(null, user); });
我的Auth.js代码:
router.get( "/google", passport.authenticate("google", { scope: ["profile", "https://www.googleapis.com/auth/youtube"], accessType: "offline", approvalPrompt: "force", }) ); // 跳转至授权页面获取用户授权码 // 拿到授权码后再次调用passport.authenticate,获取用户信息与accessToken router.get( "/google/callback", passport.authenticate("google", { failureRedirect: "/auth/error" }), function (req, res) { //console.log(req.user); //console.log("MY TOKEN: ", req.user.accessToken); //console.log("accessing accessToken in callback!...going to redirect to forntend now"); //const accessToken = req.user.accessToken; //res.cookie("accessToken", accessToken); // 用户完成授权、授权码兑换为accessToken时触发此函数 res.redirect("http://localhost:8080/auth/success"); //res.redirect("http://localhost:3000/Project/YoutubeApp/Home"); } );
内容的提问来源于stack exchange,提问作者Ethan Gordon
相关产品推荐
相关产品推荐

