gpt4 book ai didi

node.js - 将用户保存到 MongoDB 的 Passport Facebook 策略

转载 作者:可可西里 更新时间:2023-11-01 10:43:49 25 4
gpt4 key购买 nike

我正在尝试进行常规登录(使用 Facebook 策略),但我的控制台中一直出现此错误。

Error: ENOENT, open '/home/ec2-user/XXXX/node_modules/express/node_modules/connect/node_modules/static-favicon/../public/favicon.ico'

是这样吗?

这是我的代码(facebook 应用程序 token 在另一个 js 文件中):

/**
* Module dependencies.
*/

var config = require('./oauth.js');
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var mongoose = require('mongoose');
var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;

var app = express();


// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));


app.get('/', routes.index);
app.get('/users', user.list);

app.get('/auth/facebook/callback', passport.authenticate('facebook', {failureRedirect: '/'}), function(req, res) {
console.log('Facebook');
res.redirect('/success');
});

http.createServer(app).listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});

// MongoDB Settings
// Connection
mongoose.connect('mongodb://ec2-XX-XXX-XX-XXX.XX-XXX-2.compute.amazonaws.com/XXX', function(err) {
if (err) {
console.log(err);
} else {
console.log('Connected to the Users DB');
}
});
// Schema
var usersSchema = mongoose.Schema({
username: String,
facebook_id: String
});
// Insert To DB
var insertUser = mongoose.model('Users', usersSchema);


// LogIn
passport.use(new FacebookStrategy({
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret,
callbackURL: config.facebook.callbackURL
},
function(accessToken, refreshToken, profile, done) {
console.log('Now Check User');
insertUser.findOne({
facebook_id: profile.id
}, function(err, doc) {
if (err) {
console.log('user is alredy registered!');
return done(err);
}
if (!insertUser) {
var newgame = new insertUser({
username: profile.username,
facebook_id: profile.id
});
newgame.save(function(err) {
if (err) {
console.log(err);
} else {
console.log('Saved');
}
return done(err, doc);
});
} else {
//found user. Return
console.log('user is alredy registered!');
return done(err, doc);
}
});
}
));

最佳答案

该解决方案是 badsyntax 建议的解决方案的一部分(感谢 badsyntax)。最后,这解决了问题:

app.use(express.favicon(__dirname + '/node_modules/express/node_modules/connect/node_modules/static-favicon/favicon.ico'));

关于node.js - 将用户保存到 MongoDB 的 Passport Facebook 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23033673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com