1

facebook OAUTHSails.js/Node.js と Mongo をバックエンドとして使用して、アプリケーション (Web およびモバイル)に実装しようとしました。各アプリにアクセスするための専用関数を作成しendpointsました。これは、webApp にはコールバック URL が必要で、モバイルには必要ないためです。私のコードのスクリーンショットは以下にあります。しかし、この 2 つが 2 つの異なる Facebook ID を提供していることに気付きました。混乱しています。facebookId は一意であるべきではありませんか? この2つのモジュールを使用しています FacebookStrategy = require('passport-facebook').Strategy FacebookTokenStrategy = require('passport-facebook-token').Strategy

ウェブアプリStrategy

passport.use(new FacebookStrategy({
clientID      : facebook.clientID,
clientSecret  : facebook.clientSecret,
profileFields : ['id', 'email', 'last_name', 'first_name', 'gender', 'link', 'verified', 'updated_time', 'timezone', 'age_range'],
passReqToCallback: true
},
function(req, accessToken, refreshToken, profile, done) {
authenticate(req, accessToken, refreshToken, profile, done);
}
));

authenticate function being pointed at

 var authenticate = function (accessToken, refreshToken, profile, done) {
User.findOne({facebookId: profile.id}).then(function (user){
    if (user) {
        return [user, {accessToken: accessToken, refreshToken: refreshToken}]
    } else {
        var data = {
            facebookId: profile.id,
            firstname: profile._json.first_name,
            lastname: profile._json.last_name,
            email: profile._json.email,
            gender: profile._json.gender,
            fb_profile_url: profile._json.link,
            fb_verified: profile._json.verified,
            fb_updated_time: profile._json.updated_time,
            phonenumber: profile._json.phone
        }
        var userQry = User.create(data);
    }
    return [userQry, {accessToken: accessToken, refreshToken: refreshToken}]
})
.spread(function (user, credentials){
    if (user) {
        return done(null, [user, credentials]);
    } else {
        return done(null, null);
    }
})
.catch(function (err){
    return done(err, null);
});
}

モバイルアプリ戦略

4

0 に答える 0