2017-04-04 5 views
1

私はFacebookのログインを設定するためにPassport.jsを使用しているReact Routerを使用しています。私は急行路線とパスポートの設定を設定しているが、私は私のクライアント側で <a href="/api/auth/facebook">リンクを打つたびに、それがあるため、このラインで自分の特急アプリのRRを要求する:私としてリアクションルータは、ExpressサーバへのAPIコールを傍受します。

app.get('/*', function(req, res) { 
    res.sendFile(path.resolve(__dirname, '../client', 'build', 'index.html')) 
}); 

Warning: [react-router] Location "/api/auth/facebook" did not match any routes 

この特定のルートでReact Routerをバイパスするにはどうすればよいですか?

私user_routes.jsファイルは次のようになります。急行路線で

'user strict'; 

var bodyparser = require('body-parser'); 
var User = require('../models/User.js'); 

module.exports = function loadUserRoutes(router, passport) { 
    router.use(bodyparser.json()); 

    router.get('/auth/facebook', passport.authenticate('facebook', { 
    session: false, 
    successRedirect: '/chat', 
    failureRedirect: '/' 
    })); 

    router.get('/auth/facebook/callback', passport.authenticate('facebook', { 
    session: false, 
    successRedirect: '/chat', 
    failureRedirect: '/' 
    })); 

    router.post('/sign_up', passport.authenticate('local-signup', { session: false}), function(req, res) { 
    res.json(req.user); 
    }); 

    router.post('/sign_in', passport.authenticate('local-login', { session: false}), function(req, res) { 
    res.json(req.user); 
    }); 

    router.get('/signout', function(req, res) { 
    req.logout(); 
    res.end(); 
    }); 

    //get auth credentials from server 
    router.get('/load_auth_into_state', function(req, res) { 
    res.json(req.user); 
    }); 

    // get usernames for validating whether a username is available 
    router.get('/all_usernames', function(req, res) { 
    User.find({'local.username': { $exists: true } }, {'local.username': 1, _id:0}, function(err, data) { 
     if(err) { 
     console.log(err); 
     return res.status(500).json({msg: 'internal server error'}); 
     } 
     res.json(data); 
    }); 
    }) 
}; 

答えて

1

は、それらが定義されます順番にマッチしています。

したがって、/*ルートの前に、APIリクエストを処理する必要があります。

app.get('/api/auth/facebook', passport.authenticate('facebook')) 

app.get('/*', function(req, res) { 
    res.sendFile(path.resolve(__dirname, '../client', 'build', 'index.html')) 
}); 
+0

私は現在持っている: は(usersRouter、パスポート)(」./ルート/ user_routes')が必要です。app.use( '/ api'、usersRouter); –

+0

この行を試しても、コンソールは同じエラーメッセージを返しています。 –

+0

私が見ることができる限られた量から。 'app.use( '/ api'、usersRouter);'あなたが思っていることはやっていません。あなたのブラウザで '/ api/auth/facebook'に行くことができますか?私の疑念はルートが_実際には '/ auth/facebook'なのでキャッチオールがそれを得ているからです。 – powerc9000

関連する問題