Tag: passport facebook

如何发送json作为护照validation后的响应在node.js中

我正在尝试这个git的例子 。 当我将其与我的项目集成在一起时效果很好,但是我想实现的是将json作为对客户端/请求的响应发送,而不是successRedirect:'/ profile'&failureRedirect:'/ signup'。 是否有可能发送一个json,还是有一些其他方法得到相同的? 任何帮助将不胜感激,恩

用Passport和ExpressJS进行Facebook身份validation – 为什么validationcallback没有被调用?

我是Passport在ExpressJS应用程序中对用户进行身份validation。 我试图将所有的Facebook路线放在他们自己的模块中,因为我打算支持其他OAuth提供商。 在我的启动脚本中,我定义了所需的FB端点: var express = require('express'); var routes = require('./routes'); var user = require('./routes/user'); var facebook = require('./routes/facebook'); var login = require('./routes/login'); var http = require('http'); var path = require('path'); var app = express(); /* Configuration stuff here*/ // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } app.get('/login', login.index); app.get('/auth/facebook', facebook.fb_auth); app.get('/auth/facebook/callback', facebook.fb_callback); […]

req.session.passport和req.user空白,req.isAuthenticated在初次成功login后使用passport-facebook返回false

在Facebook上初次成功login并使用passport-facebook 1.0.3和express 4.6.1进行loginredirectcallback之后,req.session.passport和req.user包含serialize调用期间设置的值(我从stragegy获得),但在后续访问站点上的不同路由时,req.session.passport和req.user为空,req.isAuthenticated()返回false,因此在从FB初始成功login后,所有其他路由上的ensureAuthentication方法失败。 我没有使用集群设置,所以我相信内存存储就足够处理这个,快速configuration看起来很好(我的意思是顺序),这里是我的快速configuration configExpressApp.set('views', './views'); configExpressApp.set('view engine', 'jade'); configExpressApp.use(morgan('dev')); configExpressApp.use(cookieParser()); configExpressApp.use(bodyParser.urlencoded({ extended: true, })); configExpressApp.use(bodyParser.json()); configExpressApp.use(expressSession({ secret:'MyExpressSecret', saveUninitialized: true, resave: true })); configExpressApp.use(passport.initialize()); configExpressApp.use(passport.session()); configExpressApp.use(methodOverride()); configExpressApp.use(express.static('./public')); 这是req.session对象初始的成功login和redirect,req.user包含与req.session.passport.user相同的数据 { cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }, passport: { user: { _id: 53ce23e3121421f229a438f8, info: false, loginType: 'fb', fbId: 'MyId', name: 'Karthic Rao', […]

混合passport-facebook和passport-jwt的最佳方法是什么?

我对Node.js的开发很陌生,目前正忙于在空闲时间开发一个宠物项目。 到目前为止,我已经使用passport和passport-jwt为策略创build了JWT身份validation,并将其用于所有RESTful API。 现在我正在考虑将这个与某种Facebook身份validation混合在一起,仍然想要使用令牌身份validation。 目前这是我如何产生和获得令牌: exports.authenticate = function(req, res) { User.findOne({ email: req.body.email }, function(err, user) { if (err) return res.status(400).send(getErrorMessage(err)); if (!user) { res.status(400).send({ success: false, message: 'Authentication failed. User not found.' }); } else { if (user.checkPassword(req.body.password)) { let token = jwt.encode(user, config.secretPhrase); res.json({ success: true, token: 'JWT ' + token }); } […]

Facebook与智威汤逊护照

我一直在我的服务器上使用Passport进行用户authentication。 当用户在本地login(使用用户名和密码)时,服务器发送一个存储在本地存储中的JWT,并在需要用户authentication的每个api调用中发送回服务器。 现在我想支持Facebook和Googlelogin 。 自从我开始使用Passport以来,我认为最好是继续使用Passport策略,使用passport-facebook和passport-google-oauth 。 我会提到Facebook,但是这两种策略都是一样的。 他们都需要redirect到服务器路由( '/ auth / facebook'和'/ auth / facebook / callback' )。 这个过程是成功的保存用户,包括他们的Facebook的\谷歌ID和令牌的数据库。 在服务器上创build用户时,会创build一个JWT(不需要依赖从facebook \ google收到的令牌)。 … // Passport facebook startegy var newUser = new User(); newUser.facebook = {}; newUser.facebook.id = profile.id; newUser.facebook.token = token; // token received from facebook newUser.facebook.name = profile.displayName; newUser.save(function(err) { if (err) throw err; […]

使用passport-facebook从Facebook上检索照片

我可以通过passport-facebook获取基本的用户信息,按照下面的代码保存在mongodb中: app.get("/auth/facebook", passport.authenticate("facebook", { scope : ["email", "publish_stream", "user_location", "user_hometown", "user_birthday", "read_friendlists"]})); app.get("/auth/facebook/callback", passport.authenticate("facebook",{ successRedirect: '/', failureRedirect: '/'})); var mongoose = require('mongoose'), FacebookStrategy = require('passport-facebook').Strategy, Users = mongoose.model('Users'); module.exports = function (passport, config) { passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { Users.findOne({ _id: id }, function (err, user) { done(err, user); }); }); […]

Angular / Node / Express / Passport跨域问题 – 启用CORS Passport Facebook身份validation

尝试使用Passport在NodeJS / Express中使用Facebook对用户进行身份validation时,已经有两天,一百万次尝试启用CORS。 我在Chrome上遇到的错误是这样的: XMLHttpRequest cannot load https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…%3A8080%2Fauth%2Ffacebook%2Fcallback&scope=email&client_id=598171076960591. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. 我使用的路线非常简单: // ===================================== // FACEBOOK ROUTES ===================== // ===================================== // route for facebook authentication and login app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' })); // handle the callback after facebook has authenticated […]

passport.js与多个身份validation提供程序?

使用Passport.js有没有办法让我为相同的路由指定多个身份validation提供程序? 例如(从护照指南)我可以在下面的示例路线上使用本地和Facebook和Twitter策略? app.post('/login', passport.authenticate('local'), /* how can I add other strategies here? */ function(req, res) { // If this function gets called, authentication was successful. // `req.user` contains the authenticated user. res.redirect('/users/' + req.user.username); });

在Passport策略callback中获取请求对象

所以这里是我的passport-facebook策略configuration: passport.use(new FacebookStrategy({ clientID: "…..", clientSecret: "…..", callbackURL: "http://localhost:1337/register/facebook/callback", }, facebookVerificationHandler )); 这里是facebookVerificationHandler: var facebookVerificationHandler = function (accessToken, refreshToken, profile, done) { process.nextTick(function () { ……. }); }; 有没有办法访问facebookVerificationHandler中的请求对象? 用户通过LocalStrategy注册到我的网站,然后他们将能够添加他们的社交帐户,并将这些帐户与他们的本地帐户相关联。 当上面的callback被调用时,当前login的用户在req.user中已经可用,所以我需要访问req来将用户和facebook账户关联起来。 这是实施它的正确方法,还是应该考虑另一种方法? 谢谢。

Passport-Facebook身份validation不提供所有Facebook帐户的电子邮件

我正在使用Passport-Facebook身份validation。 passport.use(新FacebookStrategy({ clientID:'CLIENT_ID', clientSecret:'CLIENT_SECRET', callbackURL:“http://www.example.com/auth/facebook/callback” }, 函数(accessToken,refreshToken,profile,done){ process.nextTick(function(){ 执行console.log(configuration文件) }); } )); 对于一些Facebook帐户,我没有得到email_id,我甚至尝试通过使用一个范围variables如下,但我仍然无法得到email_id。 profileUrl:“”和ProfileFields:['','']