私のアプリは NodeJS、ExpressJS、および AngularJS で実行されます。PassportJS を使用して Facebook 認証を行おうとしています。不要なコードを大量に投稿するのを避けるために、Passport コードが意図したとおりに機能し、Facebook にログインし、トークンを取得して応答を受信するとだけ言っておきましょう。
ExpressJS では、私のルートは次のように設定されています。
app.get('/', routes.index);
app.get('/fbauth', passport.authenticate('facebook', { scope: 'email' }));
app.get('/fbauthed', passport.authenticate('facebook',{ failureRedirect: '/' }), routes.loggedin);
app.get('/logout', function(req, res) {
req.logOut();
res.redirect('/');
});
私のサーバーは にセットアップされていlocalhost:3000
ます。
質問
私の問題は、Angular がこれでまったく動作しないことです。自分のページにhref="/fbauth"
(これは に移動しlocalhost:3000/fbauth
ます) に移動するリンクを配置すると、アドレス バーが一瞬 に変化しlocalhost:3000/fbauth
、メインlocalhost:3000
ページがリロードされます。
ただし、localhost:3000/fbauth
アドレスバーに入力すると、認証が行われ、facebook -> に渡されlocalhost:3000/fbauthed
ます。
これは、Angular ルートがリンク内の URL を「乗っ取ろう」としているために発生していると思います<a>
が、それを達成する方法がわかりません。Angular ルートを次のように構成しようとしました。
when('/fbauth', {
redirectTo: '/fbauth'
}).
しかし、これは空白の画面をロードします。2つを連携させるにはどうすればよいですか?