护照在 NodeJS 后端无法正常工作

Passport not working properly in NodeJS backend

我是 NodeJS 世界的新手,我的 Javascript 知识可以准确地描述为 noob+ 。这么简单的事情(貌似)都失败了,别笑我!

几天来我一直在尝试使用 Passport 使 NodeJS 后端支持 Google 授权。

计划将响应重定向到特定页面,但由于某些原因它不起作用。

相关代码如下所示:

const GOOGLE_CLIENT_ID = "...........................................";
const GOOGLE_CLIENT_SECRET = "..................";
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
passport.use(new GoogleStrategy({
        clientID: GOOGLE_CLIENT_ID,
        clientSecret: GOOGLE_CLIENT_SECRET,
        callbackURL: "http://localhost:3000/auth/google/callback"
    },
    function (token, tokenSecret, profile, done) {
        console.log(profile.id);}
));

const express = require('express');
const cors = require('cors');
const passport = require('passport');
const router = express.Router();
const passportConfig = require('./Config/passport.config');
const blogapp = express();

blogapp.use(cors()); 
blogapp.use(express.static('public'));
blogapp.use(passport.initialize());
blogapp.use(passport.session());
blogapp.use(router);
.
.
.
.
.
.

blogapp.get('/auth/google',
    passport.authenticate('google', {scope: ['https://www.googleapis.com/auth/plus.login' ]}));

blogapp.get( '/auth/google/callback',
    passport.authenticate( 'google', {
        successRedirect: '/',
        failureRedirect: '/loginfailed'
    }));


它成功打印了 profile.id,但没有继续重定向到其他页面。 相关函数的另一个版本是:

blogapp.get('/auth/google/callback',
    passport.authenticate('google', {failureRedirect: '/loginfailed'}),
     (req, res) => {
        res.redirect('/');
    });

但也没用。

我也尝试了多个版本的 GoogleStrategy,包括返回 done(parameter1, parameter2) 的版本,但没有任何反应。 它只打印id,然后卡住,不进入下一页。

我做错了什么?

Passport 需要知道用户已通过使用策略回调中的 done() 助手成功验证。

    function (token, tokenSecret, profile, done) {
        console.log(profile.id);
        done(null, profile);
    }

有关验证回调和 done 函数的更多信息: http://www.passportjs.org/docs/configure/#verify-callback