2017-06-06 6 views
0

私はパスポートを使用してアプリケーションにfacebook認証を追加しようとしています。これは問題なく動作しますが、passport.use()のデータベースにアクセスする必要があります。ここでノード:req.dbへのアクセスがreqにアクセスできない

routes/auth.jsで私のコードです:私はマークされた場所にauth.jsreq.dbにアクセスするにはどうすればよい

// make our db accessible to the router 
app.use(function(req,res,next) { 
    req.db = db; 
    next(); 
}); 

app.js
var express = require('express'); 
var router = express.Router(); 
var passport = require('passport'); 
var FacebookStrategy = require('passport-facebook').Strategy; 

[...] 

passport.use(new FacebookStrategy({ 
     clientID: REDACTED, 
     clientSecret: REDACTED, 
     callbackURL: REDACTED, 
     profileFields: ['id', 'displayName', 'email'] 
    }, 
    function(accessToken, refreshToken, profile, cb) { 
     var db = need to access db here; 
     db.users.insertOne({ 'facebookId': profile.id, 'name': profile.displayName, 'email': profile.email }, function(err, user) { 
      return cb(err, user); 
     }); 
    } 
)); 

module.exports = router; 

、私は次のコードを持っていますか?

答えて

1

dbreqオブジェクトである場合は、verify関数にreqオブジェクトを渡すFacebookStrategyをconfigueすることができます。

参照してください:

passport.use(new FacebookStrategy({ 
     clientID: REDACTED, 
     clientSecret: REDACTED, 
     callbackURL: REDACTED, 
     profileFields: ['id', 'displayName', 'email'], 
     passReqToCallback: true 
    }, 
    function(req, accessToken, refreshToken, profile, cb) { 
     var db = req.db; // need to access db here; 
     db.users.insertOne({ 'facebookId': profile.id, 'name': profile.displayName, 'email': profile.email }, function(err, user) { 
      return cb(err, user); 
     }); 
    } 
)); 

は、それが動作願っています。

関連する問題