【发布时间】:2017-11-21 12:46:36
【问题描述】:
我在我的网络应用程序中使用护照 facebook 进行用户身份验证。我支持的节点在 localhost:8080 上运行,角度前端在 localhost:4200 上运行。如何保存从 Facebook 收到的数据,将其保存到数据库,然后将该数据库数据传递到我的 Angular 前端?我在网上尝试了很多指南和教程,所有这些都在同一个域上运行,但我的是不同的域(8080 和 4200)。
以下是我的社交验证码,如果有帮助的话。
module.exports = function(app, db) {
var express = require('express'),
ObjectID = require("mongodb").ObjectID,
passport = require('passport'),
FacebookStrategy = require('passport-facebook').Strategy,
GoogleStrategy = require( 'passport-google-oauth2' ).Strategy,
LinkedInStrategy = require('passport-linkedin');
var authConfig = require('../config/socialConfig');
var session = require('express-session');
app.use(passport.initialize());
app.use(passport.session());
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: false }
}))
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
passport.use(new FacebookStrategy({
clientID: authConfig.facebookAuth.clientID,
clientSecret:authConfig.facebookAuth.clientSecret ,
callbackURL: authConfig.facebookAuth.callbackURL,
profileFields: ['id', 'displayName', 'photos', 'email']
},
function(token, refreshToken, profile, done) {
console.log("Hello" + profile);
// User.findOrCreate(..., function(err, user) {
// if (err) { return done(err); }
// done(null, user);
// });
done(null, profile);
}
));
app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }));
app.get('/auth/facebook', passport.authenticate('facebook', { scope: 'email' }));
}
下面是我到 facebook auth 的前端链接
<a href="/auth/facebook" target="_blank">Facebook Login</a>
任何帮助将不胜感激。期待一些帮助,在此先感谢。
【问题讨论】:
标签: angularjs node.js facebook passport.js