在node.js(MEAN堆栈)应用程序

时间:2015-06-26 20:46:12

标签: node.js facebook-graph-api passport.js mean-stack passport-facebook

我正在实施Facebook登录并向我的应用程序注册功能,并且可以访问Facebook以便用户输入他们的信息,但无法使回调工作。我已将下面的代码输入passport.js(显然是x'输出我们的信息):

passport.use(new FacebookStrategy({
clientID: "xxxxxxxxxxxxxx",
clientSecret: "xxxxxxxxxxxxxxxxxxx",
callbackURL: "https://xxxxxxxxxxxxxxxx/auth/facebook/callback/",
enableProof: false,
profileFields: ['id', 'displayName', 'photos']
},
function (accessToken, refreshToken, profile, done) {
 process.nextTick(function () {

 User.findOne({facebookId: profile.id}, function (err, user) {

  if (err) {
    return done(err);
  }

  if (user) {

    return done(null, user);

  } else {

    var data = {
      facebookId: profile.id,
      f_name: profile.first_name,
      l_name: profile.last_name,
      username: profile.email
    };

    if (profile.emails && profile.emails[0] && profile.emails[0].value)            {
      data.username = profile.emails[0].value;
    }

    User.create(data, function (err, user) {
      return done(err, user);
    });
  }
});
});
}));

passport.serializeUser(function(user, callback) {
  callback(null, user._id);
});

passport.deserializeUser(function(id, done) {
 User.findById({
 _id: id
 }, function(err, user) {
  callback(err, user);
 });
});  

passport.use(new LocalStrategy(
 function (username, password, done) {
   console.log(username);
   console.log(password);
User.findOne({ 'username': username }, function (err, user) {
  // if (err) { return done(err); }
  if (!user) {
    return done(null, false, { message: 'Incorrect email.' });
  }
  if (!user.validPassword(password)) {
    return done(null, false, { message: 'Incorrect password.' });
  }
  return done(null, user);
});
 }
));

index.js中包含以下回调网址:

   router.get('/auth/facebook', passport.authenticate('facebook', { 
   scope: 'email' }));

 router.get('/auth/facebook/callback',
    passport.authenticate('facebook', {
        successRedirect : '/user/#/home',
        failureRedirect : '/'
    }));

我可以将应用程序直接发送到Facebook登录页面onClick,但是一旦用户将他们的电子邮件和密码输入到facebook,该应用程序就无法重定向重定向并将该人员带到我们的主页。重定向开始发生,但一旦尝试加载我们的应用程序就会遇到错误。我们可能错误地使用其中一个重定向字段吗?作为旁注,我们应该在facebook开发者应用程序页面上将其设置为有效的OAuth重定向URI?

0 个答案:

没有答案