使用Passport JS进行身份验证

时间:2017-08-26 10:59:44

标签: node.js facebook oauth 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);
                    })
                }
            });
        });

    }
));

我已经更新了auth.js文件中的秘密。 我还更新了网站网址:http://localhost:8080并在developers.facebook.com中添加了appdomain:localhost

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

1 个答案:

答案 0 :(得分:0)

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