基于https://github.com/passport/express-4.x-facebook-example/blob/master/server.js,我尝试使用Passport和node.js实现基本的Google身份验证。
My Passport配置如下所示:
passport.use(new GoogleStrategy({
clientID: GOOGLE_CLIENT_ID,
clientSecret: GOOGLE_CLIENT_SECRET,
callbackURL: "https://localhost:3000/auth/callback" // not sure if correct.
},
function(accessToken, refreshToken, profile, cb) {
console.log("accessToken: " + accessToken);
console.log("refreshToken: " + refreshToken);
console.log("profile: " + profile);
console.log("cb: " + cb);
cb(accessToken, profile);
}
));
我已经设置了以下GET路线:
app.get('/auth/',
passport.authenticate('google', { scope: ['profile'] }));
app.get('/auth/callback',
passport.authenticate('google', { failureRedirect: '/login' }),
function(req, res) {
console.log("success");
// Successful authentication, redirect home.
res.redirect('/');
});
当我尝试访问身份验证页面时,我获得了一个正常的Google登录屏幕,但在我登录后,我收到了net::ERR_CONNECTION_CLOSED
消息。该网址看起来像https://localhost:3000/auth/callback?code=ACCESS_CODE
,但不会导致重定向到/login
(如果失败)或重定向到/
,如果成功的话。
任何帮助表示赞赏!我对Passport和一般的oauth都很新。
答案 0 :(得分:0)
根据passport oauth2 library documentation,护照中间件回调的第一个参数是错误。所以,你的代码:
cb(accessToken, profile)
被视为错误的 accessToken '错误'。这可能是一个问题。您需要将其更改为:
cb(null, profile)