护照在 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
我是 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