connectを使用してパスポートをnodejsサーバーに統合しようとしていますが、正しく統合できないようです。すべてのガイド/例でexpressJSを使用しているため、コードを再フォーマットして自分のコードで動作するように最善を尽くしましたが、動作させることができないようです。関連する部分は以下のとおりです。何が問題なのか、誰かアドバイスはありますか?passport.authenticate()が呼び出されていないようです(少なくとも、Facebook認証コールバック内のconsole.logメッセージは出力されません)。私は現在データベースに何も保存していないので、問題は私が見逃している本当に単純なものであることが望まれます。
頭に浮かぶ唯一のことは、Facebookの潜在的なコールバックです。これはローカルホストのURLです(私はまだこれをローカルで開発しているため)。私は(純粋にローカルインスタンスからの)everyauthを使用してFacebookで問題なく認証できましたが、passportJSが対処しているように見えるさまざまな問題があったため、passportJSに切り替えました。
passport = require('passport');
fpass = require('passport-facebook').Strategy;
passport.serializeUser(function(user,done){
done(null, user);
});
passport.deserializeUser(function(obj,done){
done(null,obj);
});
passport.use(new fpass({
clientID:'facebook app id',
clientSecret:'facebook app secret',
callbackURL:'http://localhost:3000/auth/facebook/callback'
},
function(accessToken, refreshToken, fbUserData, done){
console.log('got here');
return done(null,fbUserData);
}
));
function checkLoggedIn(req, res, next){
console.log("req.user: " + req.user);
if(req.user)
next();
else{
console.log('\nNot LOGGED IN\n');
if(req.socket.remoteAddress || req.socket.socket.remoteAddress == '127.0.0.1'){
var folder,contentType;
console.log('req url = '+req.url);
if(req.url == '/'){
folder = __dirname + '/landingPage.html';
contentType = 'text/html';
}
else if(req.url == '/auth/facebook'){
passport.authenticate('facebook');
return;
}
else if(req.url == '/auth/facebook/callback'){
passport.authenticate('facebook', {failureRedirect: '/failbook', successRedirect:'/'});
return;
}
if(folder){
console.log('got to folder part\n\n');
fs.readFile(folder, function(error, content){
if(error){
res.writeHead(500);
res.end();
}
else{
res.writeHead(200, {'Content-Type': contentType});
res.end(content);
}
});
}
else{ res.writeHead(500); res.end();}
}
else {res.writeHead(500); res.end();}
}
}
connect.createServer(
connect.cookieParser(),
connect.bodyParser(),
connect.session({secret:'wakajakamadaka'}),
passport.initialize(),
passport.session(),
checkLoggedIn).listen(8888);
console.log('Server has started.');
}
誰かアドバイスがありますか、私がしていることにグリッチがありますか?私の他の2つの選択肢は、everyauthに戻ってそこで何が起こっているのかを理解するか、ExpressJSに切り替えることですが、どちらのオプションも使用したくありません。
最高、
サーミ人