0

すべてがうまくいくようです。Parse.comへの要求は、ユーザーが存在するかどうかを確認し、ユーザーを作成または取得します。私は2つの主な問題を抱えています。まず、deserializeUser関数が呼び出されると、20 人の同一のユーザーが返され、関数は本来のfindUserとおり、それらの 20 人のユーザーを返します。また、アクセスできませんreq.user

    passport.serializeUser(function(user, done) {

            done(null, user.objectId);
    });

    passport.deserializeUser(function(uid, done) {

            console.log(uid)
            // This outputs the ObjectId 20 TIMES!! ??

            Parse.findUser(uid,function(error,user){

                done(null, user);
            })
    });

    // CONFIGURATION
    app.configure(function() {
            app.use(express.bodyParser()); //read
            app.use(express.cookieParser()); //read
        app.use(express.session({ secret: process.env.SESSION_SECRET || 'abcde' }));
        app.use(passport.initialize());
        app.use(passport.session());
            app.use(app.router);
            app.use(express.static(__dirname + '/static'))
    });

    passport.use(new FacebookStrategy({
            clientID: process.env.FACEBOOK_APP_ID || 'app_id',
            clientSecret: process.env.FACEBOOK_SECRET || 'fb_secret',
        callbackURL: "http://localhost:5000/auth/facebook/callback"
        },
        function(accessToken, refreshToken, profile, done) {

            process.nextTick(function() {
                    _parse.user(accessToken, profile,function(parseUser){
                        //this returns the user.....

                    return done(null, parseUser);
                    })
            })
        })
    )
    app.get('/auth/facebook',
        passport.authenticate('facebook',{scope:'email'}),
            function(req, res){
                // The request will be redirected to Facebook ....
    });

    app.get('/auth/facebook/callback',
        passport.authenticate('facebook', { failureRedirect: '/login' }),
            function(req, res) {

                    console.log(req.user)
                    // this works! ...
                res.redirect('/browse');
    });

    app.get('/browse',function(req,res){
            console.log(req.user)
            // this is works too ...

            res.render('browse.jade',{title:'Browse',classes:'browse'})
    })

    app.get('/logout', function(req, res){
        req.logout();
        res.redirect('/login');
    });
4

1 に答える 1

8

私の疑いでは、20 の異なるリソースを含むページを読み込んでおり、各呼び出しはそれらのリソースの 1 つへの単一の要求に対するものです。

app.use(express.static(__dirname + '/static'))ミドルウェアをミドルウェア スタックの一番上に移動します。これらのリソースは静的で公開されているため、本文、Cookie を解析したり、セッションをロードしたりする必要はありません。

于 2012-10-05T15:09:29.637 に答える