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 として何を設定すればよいでしょうか?