![](/img/trans.png)
[英]passport Unknown authentication strategy “local”, “facebook”, “google”
[英]passport.js throws Unknown authentication strategy “Google”
我一直在關注本指南,但不斷收到錯誤“未知的身份驗證策略‘google’”。 我不知道發生了什么,我已經嘗試搜索其他答案但收效甚微。 任何幫助將不勝感激,謝謝!
錯誤:
Unknown authentication strategy "google"
Error: Unknown authentication strategy "google"
at attempt (D:\Programming\weebly-site\node_modules\passport\lib\middleware\authenticate.js:166:37)
at authenticate (D:\Programming\weebly-site\node_modules\passport\lib\middleware\authenticate.js:342:7)
at Layer.handle [as handle_request] (D:\Programming\weebly-site\node_modules\express\lib\router\layer.js:76:5)
at next (D:\Programming\weebly-site\node_modules\express\lib\router\route.js:100:13)
at Route.dispatch (D:\Programming\weebly-site\node_modules\express\lib\router\route.js:81:3)
at Layer.handle [as handle_request] (D:\Programming\weebly-site\node_modules\express\lib\router\layer.js:76:5)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:234:24
at Function.proto.process_params (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:312:12)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:228:12
at Function.match_layer (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:295:3)
at next (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:189:10)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:191:16
at Function.match_layer (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:295:3)
at next (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:189:10)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:191:16
at Function.match_layer (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:295:3)
at next (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:189:10)
at Function.proto.handle (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:165:3)
at router (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:34:12)
at Layer.handle [as handle_request] (D:\Programming\weebly-site\node_modules\express\lib\router\layer.js:76:5)
at trim_prefix (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:270:13)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:237:9
at Function.proto.process_params (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:312:12)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:228:12
at Function.match_layer (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:295:3)
at next (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:189:10)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:560:15
at next (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:186:14)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:191:16
at Function.match_layer (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:295:3)
at next (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:189:10)
at Function.proto.handle (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:165:3)
at router (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:34:12)
at Layer.handle [as handle_request] (D:\Programming\weebly-site\node_modules\express\lib\router\layer.js:76:5)
at trim_prefix (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:270:13)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:237:9
at Function.proto.process_params (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:312:12)
at D:\Programming\weebly-site\node_modules\express\lib\router\index.js:228:12
at Function.match_layer (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:295:3)
at next (D:\Programming\weebly-site\node_modules\express\lib\router\index.js:189:10)
at SendStream.error (D:\Programming\weebly-site\node_modules\express\node_modules\serve-static\index.js:98:7)
at SendStream.emit (events.js:95:17)
at SendStream.error (D:\Programming\weebly-site\node_modules\express\node_modules\send\index.js:244:17)
at SendStream.onStatError (D:\Programming\weebly-site\node_modules\express\node_modules\send\index.js:340:48)
at next (D:\Programming\weebly-site\node_modules\express\node_modules\send\index.js:619:28)
at D:\Programming\weebly-site\node_modules\express\node_modules\send\index.js:627:23
at Object.oncomplete (fs.js:107:15)
管理.js
// Generated by CoffeeScript 1.8.0
(function() {
var express, isLoggedIn, passport, router;
express = require('express');
passport = require('passport');
router = express.Router();
isLoggedIn = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect("/admin");
};
router.get('/', function(req, res) {
return res.render('admin/admin_index.jade');
});
router.get('/editor', isLoggedIn, function(req, res) {
return res.render('admin/admin_editor.jade');
});
router.get('/auth/google', passport.authenticate('google', {
scope: ['profile', 'email']
}));
router.get('/auth/google/callback', passport.authenticate('google', {
successRedirect: '/editor',
failureRedirect: '/'
}));
module.exports = router;
}).call(this);
護照.js
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var User = require('../models/users.js');
var configAuth = require('./auth.js');
module.exports = function(passport) {
passport.use(new GoogleStrategy({
clientID : configAuth.googleAuth.clientID,
clientSecret : configAuth.googleAuth.clientSecret,
callbackURL : configAuth.googleAuth.callbackURL,
},
passport.serializeUser(function(user, done){
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
function(token, refreshToken, profile, done) {
process.nextTick(function() {
User.findOne({ 'google.id' : profile.id}, function(err, user) {
if(err)
return done(err);
if(user) {
return done(null, user);
} else {
var newUser = new User();
newUser.google.id = profile.id;
newUser.google.token = token;
newUser.google.name = profile.displayName;
newUser.ggoogle.email = profile.emails[0].value;
newUser.save(function(err){
if(err)
throw err;
return done(null, newUser);
});
}
});
});
}));
};
在我看來,您根本沒有調用require('./passport.js')(passport)
(或任何路徑),即。 您沒有配置護照。 我的假設可能得到以下事實的進一步支持,即如果您包含來自passport.js
代碼,您會看到SyntaxError: Unexpected token ;
因為,刪除參數和多余的東西,這就是你定義的:
passport.use(new GoogleStrategy({}, passport.serializeUser(function(user, done){});
passport.deserializeUser(function(id, done) { });
function(token, refreshToken, profile, done) { });
如果您要遵循該教程,則應該查看定義基本應用程序的第一部分。 在您的admin.js
,在require('./passport.js')(passport)
行之后添加require('./passport.js')(passport)
require('passport')
步驟 1-在passport.js 中包含passport 包並刪除module.exports 並按照您在admin.js 中編寫的代碼編寫代碼
第 2 步 -在 admin.js 中包含這一行require('./passport.js');
畢竟所有的包都包括在內。
你的passport.js看起來像這樣——
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
var User = require('../models/users.js');
var configAuth = require('./auth.js');
var passport = require('passport');
passport.use(new GoogleStrategy({
clientID : configAuth.googleAuth.clientID,
clientSecret : configAuth.googleAuth.clientSecret,
callbackURL : configAuth.googleAuth.callbackURL,
},
passport.serializeUser(function(user, done){
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
function(token, refreshToken, profile, done) {
process.nextTick(function() {
User.findOne({ 'google.id' : profile.id}, function(err, user) {
if(err)
return done(err);
if(user) {
return done(null, user);
} else {
var newUser = new User();
newUser.google.id = profile.id;
newUser.google.token = token;
newUser.google.name = profile.displayName;
newUser.ggoogle.email = profile.emails[0].value;
newUser.save(function(err){
if(err)
throw err;
return done(null, newUser);
});
}
});
});
}));
你的 admin.js 看起來像這樣 -
(function() {
var express, isLoggedIn, passport, router;
express = require('express');
passport = require('passport');
**// include the your passport.js file path
require('./passport.js');**
router = express.Router();
isLoggedIn = function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
res.redirect("/admin");
};
router.get('/', function(req, res) {
return res.render('admin/admin_index.jade');
});
router.get('/editor', isLoggedIn, function(req, res) {
return res.render('admin/admin_editor.jade');
});
router.get('/auth/google', passport.authenticate('google', {
scope: ['profile', 'email']
}));
router.get('/auth/google/callback', passport.authenticate('google', {
successRedirect: '/editor',
failureRedirect: '/'
}));
module.exports = router;
}).call(this);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.