パスポート・フェイスブックで認証し、facebookのユーザーIDとユーザー名をdbに格納することができます。私は角コントローラからnodejsを照会しています:AngularからNodejsにpassportjsで照会
ノードでMyApp.controller("FacebookLogin", function($scope, $http){
$scope.login = function(){
$http.get("/facebooklogin").then(function(response){
if(response.data){
console.log(response.data); // nothing is logged here
} else {
console.log("No Data");
}
});
}
});
:
app.get('/facebooklogin', passport.authenticate('facebook'));
app.get('/auth/facebook/callback', passport.authenticate('facebook', function(err, user, info){
console.log(err, user, info);
if(err) throw err;
// res.send(user); //Do I send the user info from here?
}));
私はのlocalStorageに保存し、将来の要求のためのDBを照会するためにそれを使用するために、角にユーザーIDを送信します。それはそれを行う正しい方法ですか?それはSPAです。私のブラウザにはconnect.sid
のクッキーが作成されています。 userid
がある場合、またはpost
/get
で、どのようにnodejsがセッションを認識するのですか?userid
を抽出するにはどうすればよいですか?
私は読みましたが、これら二つのことが正確に何をすべきか理解していなかった。
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
多くの感謝を。
意味があります。だから私はセッション情報を使用し、localStorageクッキーを作成する必要がありますか?しかし、それは単一ページアプリケーションなので、アプリ内の他のページはありません。 Angular Controllerは必要ないので、どこからローカルストレージにクッキーを保存しますか? – Somename
/facebook/callback用のサーバーサイドハンドラは、クライアント側のアプリケーションを通常どおり(つまり、アプリケーションのルートにリダイレクトするか、ログインしたユーザーが終了すると予想される場所に)レンダリングしますが、facebookセッション情報何らかの形で(クッキーを設定し、URLにパラメータを追加するなど)。あなたの角度コードは、このクッキーまたはパラメータを検索し、それに応じて応答します(ローカルストレージに保存する、別のビューを表示するなど) – fluoresce
これは美しく機能します。ありがとうマスター..弓を取る – Somename