0

Facebook のログイン機能と登録機能をアプリケーションに実装しており、Facebook にアクセスしてユーザーが情報を入力することはできますが、コールバックを機能させることはできません。以下のコードをpassport.jsに入力しました(明らかに情報をx'ingしています):

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);
});
 }
));

次のコールバック URL が 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 に入力すると、アプリケーションはリダイレクト時にリロードできず、その人を当社のホームページに移動させることができません。リダイレクトが発生し始めますが、アプリケーションをロードしようとするとエラーが発生します。リダイレクト フィールドの 1 つを間違って使用していませんか? 余談ですが、facebook 開発者アプリケーション ページで有効な OAuth リダイレクト URI として何を設定すればよいでしょうか?

4

0 に答える 0