2014-10-21 3 views
3

Я слежу за руководством this и продолжаю получать сообщение об ошибке «неизвестная стратегия аутентификации» 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) 

admin.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); 

passport.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); 
        }); 
       } 
      }); 
     }); 
    })); 
}; 

ответ

7

Он смотрит на меня, вы не вызывая 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')

Смежные вопросы