2012-06-26 18 views

Odpowiedz

17

Istnieje kilka sposobów, aby zbliżyć się do tego, ale myślę, że jeden z najbardziej prosta jest użycie opcji passReqToCallback. Po włączeniu tej opcji req staje się pierwszym argumentem sprawdzającego wywołania zwrotnego, a stamtąd można sprawdzić, czy istnieje req.user, co oznacza, że ​​użytkownik jest już zalogowany. W tym momencie można powiązać użytkownika z danymi profilu Facebook i dostawą ta sama instancja użytkownika do wykonanego wywołania zwrotnego. Jeśli req.user nie istnieje, po prostu postępuj tak jak zwykle.

Na przykład:

passport.use(new FacebookStrategy({ 
    clientID: --- 
    clientSecret: --- 
    callbackURL: "http://mycallback" 
    passReqToCallback: true 
    }, 
    function(req, accessToken, refreshToken, profile, done) { 
    if (req.user) 
     // user is already logged in. link facebook profile to the user 
     done(req.user); 
    } else { 
     // not logged in. find or create the user based on facebook profile 
    } 
    } 
)); 
+0

To doskonały Jared dziękuję ... i dziękuję za uratowanie mnie od everyauth :) – Pardoner

+0

dziękuję bardzo, miałem również ten problem. to passReqToCallback rozwiązuje wszystko! Dziękuję Ci! – bbnn

+0

Woohooo dziękuję bardzo. Działa: D – Zeck

Powiązane problemy