Oauth 如何在express.js应用程序中使用passportJS传递访问令牌?

Oauth 如何在express.js应用程序中使用passportJS传递访问令牌?,oauth,oauth-2.0,facebook-oauth,Oauth,Oauth 2.0,Facebook Oauth,在用户使用Passport的Facebook策略进行身份验证之后,我想用用户的个人信息呈现一个表单。我正在使用fbgraph模块访问Facebook API。但是我必须在site.js中要求它检索他的个人信息,在authentication.js中要求它设置accessToken。有没有一个优雅的方法来处理这个问题 index.js var authentication = require ('./authentication'); var site = require('./site');

在用户使用Passport的Facebook策略进行身份验证之后,我想用用户的个人信息呈现一个表单。我正在使用fbgraph模块访问Facebook API。但是我必须在site.js中要求它检索他的个人信息,在authentication.js中要求它设置accessToken。有没有一个优雅的方法来处理这个问题

index.js

var authentication = require ('./authentication');
var site = require('./site');

app.get('/form-fb', site.form_fb);
app.get('/auth/facebook', authentication.authenticate_fb);
app.get('/auth/facebook/callback', authentication.callback_fb);
site.js

var fbgraph = require ('fbgraph');

exports.form_fb = function (req, res){
   fbgraph.get("me?fields=first_name,last_name,email,birthday,gender", function (err, fbres) {
      res.render('form-fb', fbres);
   });
};
authentication.js

var passport = require('passport');
var fbgraph = require ('fbgraph');
var FacebookStrategy = require('passport-facebook').Strategy;
var db = require ('./db');

passport.use(new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: FACEBOOK_APP_CALLBACKURL
  },
  function(accessToken, refreshToken, profile, done) {

    fbgraph.setAccessToken(accessToken);

    db.User.findOne({'accounts.uid': profile.id, 'accounts.provider': 'facebook'}, function (err, oldUser){
      if (oldUser){
        console.log('Existing user: ' + oldUser.first_name);
        done(null, oldUser);
      } else {
        var newUser = new db.User();
        var account = {provider: "facebook", uid: profile.id};
        newUser.accounts.push(account);
        newUser.save(function(err) {
          if (err) {throw err};
          console.log ('New user: ' + profile.name.givenName);
          done (null, newUser);
        });
      }
    });
  }
));

exports.authenticate_fb = passport.authenticate('facebook', {scope: FACEBOOK_APP_SCOPE});

exports.callback_fb = passport.authenticate('facebook', { successRedirect: '/form-fb',
                                                       failureRedirect: '/login' });