2017-09-14 9 views
0

私はリアクションフロントエンドがAPI呼び出し専用の高速サーバーに接続しています。私は認証にパスポートを使用していますが、いくつか問題があります。私はFacebookのための戦略を設定している。私はFacebookを使用してログインすることができます、シリアル化メソッドが呼び出され、ユーザーがDBに追加され、戦略コールバックメソッドでreq.userオブジェクトを見ることができますが、reqを取得できません。この時点以降のユーザーオブジェクト。助言がありますか?私からPassportJsユーザー未定義フロントエンドExpress/MongoDBバックエンドに反応する

App.js

let express = require('express'); 
let router = express.Router(); 
let passport = require('passport'); 

router.get('/login/facebook', passport.authenticate('facebook', {scope: ["email"]})); 

router.get('/facebook/return', 
    passport.authenticate('facebook', { failureRedirect: '/' }), 
    (req, res) => { 
     res.redirect('http://localhost:3000'); 
}); 

router.get('/logout', 
    passport.authenticate('facebook', { failureRedirect: '/' }), 
    (req, res) => { 
     req.logout(); 
     res.redirect('http://localhost:3000'); 
}); 


module.exports = router; 

Auth.js

let express = require('express'); 
let router = express.Router(); 
let passport = require('passport'); 

router.get('/login/facebook', passport.authenticate('facebook', {scope: ["email"]})); 

router.get('/facebook/return', 
    passport.authenticate('facebook', { failureRedirect: '/' }), 
    (req, res) => { 
     res.redirect('http://localhost:3000'); 
}); 

router.get('/logout', 
    passport.authenticate('facebook', { failureRedirect: '/' }), 
    (req, res) => { 
     req.logout(); 
     res.redirect('http://localhost:3000'); 
}); 


module.exports = router; 

Species.js

let express = require("express"); 
let router = express.Router(); 
let Species = require("../models/species").Species; 

router.get('/', 
(req, res, next) => { 
    console.log(req.user); 
    Species.find({}).exec((err, species) => { 
     if(err) return next(err); 
     res.json(species); 
    }); 
}); 

module.exports = router; 
+0

私は素晴らしい提案があります。まず[ask]を確認してください。特に[mcve]部分。 – bennygenel

+0

支援を提供するためにコードを参照する必要があります。 –

答えて

0

クイック少し先端

exports.fbauth = passport.authenticate('facebook', {scope: ['email']}); 
exports.fbcallback = passport.authenticate('facebook', { 
    scope: ['email'], 
    failureRedirect: '/login', 
    failureFlash: 'Failed Login!', 
    successRedirect: '/account', 
    successFlash: 'You are now logged in!' 
}); 

両方の認証にscope:emailを含めるようにしてください

関連する問題