使用适用于Facebook的Passport JS进行身份验证



单击以下链接后,不会重定向到 facebook.com:

<a href="/auth/facebook" class="btn btn-primary"><span class="fa fa-facebook">&nbsp; Facebook</span> </a>

路线如下:

//Facebook
app.get('/auth/facebook', passport.authenticate('facebook', { scope : ['email'] }));
app.get('/auth/facebook/callback',
passport.authenticate('facebook', { successRedirect: '/profile',
failureRedirect: '/' }));

策略代码如下:

var FacebookStrategy = require('passport-facebook').Strategy;
passport.use(new FacebookStrategy({
clientID: configAuth.facebookAuth.clientID,
clientSecret: configAuth.facebookAuth.clientsecret,
profileFields: ['id', 'displayName', 'email'],
callbackURL: configAuth.facebookAuth.callbackURL
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function() {
User.findOne({
'facebook.id': profile.id
}, function(err, user) {
if (err)
return done(err);
if (user)
return done(null, user);
else {
var newUser = new User();
newUser.facebook.id = profile.id;
newUser.facebook.token = accessToken;
newUser.facebook.name = profile.name.givenName + ' ' + profile.name.familyName;
newUser.facebook.email = profile.email[0].value;
newUser.save(function(err) {
if (err)
throw err;
else
return done(null, newUser);
})
}
});
});
}
));

我已经更新了我的身份验证.js文件中的机密。 我还更新了网站网址:http://localhost:8080 并添加了应用程序域:本地主机 developers.facebook.com

每当我单击HTML链接时,控件都会保留在同一页面上,然后显示找不到 http://localhost:8080/auth/facebook 网页

您应该将Facebook开发人员中的网站URL更新为http://localhost:8080/auth/facebook/callback。据我所知,您的代码没有任何问题。我也创建了这个应用程序,您的代码和我的代码之间的唯一区别是我使用了 ssl 证书。即使更新的网址对您不起作用,也请告诉我。

最新更新