Articles of passport.js

FacebookTokenError:这个授权码已被使用

好的,所以这是很多原因的常见错误。 我正在尝试修改现有的Node-Passport-Facebook模块,让桌面上的本地图像在login后上传到用户的Facebook帐户。这是我的目标。 这是我正在扩展的代码模块 https://github.com/passport/express-4.x-local-example 而这又是基于https://github.com/jaredhanson/passport-facebook 我从来没有通过console.log('错误在这里..错误, “这个授权码已被使用。” 令人困惑的是,返回的authentication代码总是不一样! 所以当我尝试将它换成访问令牌时,它怎么能被使用呢? 任何人都可以提供一些build议,或者我可能会尝试下一步? 我的直觉是有一些关于Passport.js没有正确实施。 所以我的问题是,我将如何修改下面的代码(基于这个护照的例子) https://github.com/passport/express-4.x-facebook-example/blob/master/server.js login后上传图片? var express = require('express'); var passport = require('passport'); var Strategy = require('passport-facebook').Strategy; var CLIENTSECRET ='<client secret>'; var APPID ='<app id>'; // Configure the Facebook strategy for use by Passport. // // OAuth 2.0-based strategies require a `verify` function which receives the […]

Node API – 如何将Facebooklogin链接到Angular前端?

重写这个问题更清楚。 我已经使用passport-facebook在我的网站上处理与Facebook的login。 我的前端是在Angular,所以我现在知道需要了解什么是调用API路线的正确方法。 我已经有几个使用Angular的$http服务调用 – 但是作为这个login与Facebook实际上重新路由的Facebook页面,我仍然可以使用通常的: self.loginFacebook = function )() { var deferred = $q.defer(); var theReq = { method: 'GET', url: API + '/login/facebook' }; $http(theReq) .then(function(data){ deferred.resolve(data); }) return deferred.promise; } 或者它是完全正确/安全/正确的程序,直接在窗口位置中的URL: self.loginFacebook = function (){ $window.location.href = API + '/login/facebook'; } 而且,从这个我怎样才能从API发回一个令牌? 我似乎无法修改callback函数来做到这一点? router.get('/login/facebook/callback', passport.authenticate('facebook', { successRedirect : 'http://localhost:3000/#/', failureRedirect : 'http://localhost:3000/#/login' […]

oauthcallback后护照会话消失

制作与Ionic,Angular,nodejs等混合应用程序 用户使用电子邮件和密码login,然后想要将第三方身份validation添加到他们的帐户。 他们被序列化进入会话。 我们使用护照进行检查,如果他们有第三方授权,如果没有发送他们这样做。 当用户回到callbackurl时,我们不知道他们是谁,因为req.session是未定义的。 编辑:我一直在试图简化代码来解决问题的路线。 // require everything and app.use them // this is what I'm using for the session config app.use(session({ secret: 'thisIsASecret', resave: false, saveUninitialized: false, cookie: {secure: true, maxAge: (4*60*60*1000)} })); var user = { // simple user model for testing id: 1, username: 'username', password: 'password', oauthId: null }; passport.serializeUser(function(user, […]

Passport + Node – req.isAuthentiated不是Object.isLoggedIn中的函数

我的代码有一个错误,带有护照function。 我遵循这个教程: 遵循示例教程 我从nodemon server.js中的/ routes文件中得到一个错误: TypeError:req.isAuthentiated不是一个函数 而当我尝试login浏览器窗口(我可以注册,而数据库正在存储用户)这个错误: TypeError: req.isAuthentiated is not a function at Object.isLoggedIn [as handle] 这是一个护照function,我很困惑如何解决这个问题。 server.js: var express = require('express'); var app = express(); var port = process.env.PORT || 8080; var mongoose = require('mongoose'); var passport = require('passport'); var flash = require('connect-flash'); // messages stored in session var morgan = require('morgan'); […]

如何仅在经过身份validation时才给予会话? 任何其他中间件订单将无法正常工作

无论用户是否login,我都有创build会话的问题。 如果仅在用户成功login时才创build会话,我希望它。 否则,如果一个selenium机器人命中…例如,路由route('/users/:username')我的会议收集会充满会议,而不是真正的用户。 我让我的用户永远保持login状态,所以会话cookie设置为一年…如果会话不属于真实用户,则更糟糕。 只有authentication成功,我如何才能将会话返回给客户端? 我尝试了不同的路线和中间件的顺序,但是这是唯一正确工作的顺序。 app.use(session({ secret: 'bob', saveUninitialized: true, resave: true, name: 'curves', cookie: { secure: false, httpOnly: false, maxAge: 365 * 24 * 60 * 60 * 1000 }, store: new MongoStore(storeOptions) })); app.use(passport.initialize()); app.use(passport.session()); app.use('/', auth); app.use('/api/v1', router); // isLoggedIn WOULD NOT WORK IF I PLACED THIS BEFORE PASSPORT/SESSION MIDDLEWARE router.route('/users/:username') […]

Passport.js执行

我一直在看网上的一些passport.js教程,但没有清楚地了解到底发生了什么。 有人能帮我清楚我的疑惑吗? 请先阅读底部的段落。 所以假设我正确地设置了一切,这是login策略: passport.use('login', new LocalStrategy({ passReqToCallback : true }, function(req, username, password, done) { // check in mongo if a user with username exists or not User.findOne({ 'username' : username }, function(err, user) { // In case of any error, return using the done method if (err) return done(err); // Username does not […]

login到一个快速应用程序会破坏其他(相同的服务器)会话

我有两个独立的Express 4.x应用程序在同一台服务器上运行(不同的端口),共享一个MongoDB实例。 他们都使用不同的数据库,并有不同的会话秘密。 我可以单独login到应用程序A或B,而不会出现问题。 我的会议得到保持,一切都很好。 但是,如果我login到A然后login到B,则A中的会话被销毁(反之亦然)。 这两个应用程序具有几乎相同的本地身份validation 他们的serializeUser和deserializeUser是非常原始的(跟随Passport docs几乎到tee)。 看来,当login到A然后B, req.session.passport被销毁,导致req.user不正确序列化应用程序A和会话被认为是无效的。 我开始认为它与两个应用程序在同一台计算机(因此是域)上运行的事实不同,只有端口不同。

Loopback Passport用户为空

所以我试图做一个基本的Facebook与Loopback和护照集成,使用示例应用程序作为指导: https : //github.com/strongloop/loopback-example-passport 我觉得我错过了一件小事,因为req.user总是回来为空,即使一切似乎排队。 这会导致ensureLoggedIn(/failedLogin)每次都会指向失败的login。 这是我的server.js : var loopback = require('loopback'); var boot = require('loopback-boot'); var flash = require('express-flash'); var bodyParser = require('body-parser'); var app = module.exports = loopback(); // Creating a bit of passport var PassportConfigurator = require('loopback-component-passport').PassportConfigurator; var passportConfigurator = new PassportConfigurator(app); // Bootstrap the application, configure models, datasources and middleware. // […]

在使用MySQL的PassportJs中的多个序列化用户

正在开发使用Nodejs与MySQL的应用程序 对于使用passportJS的login身份validation。 在这个应用程序有两个loginpipe理员和另一个客户。 所以分开的表是有用户和注册。 passport.serializeUser(function(user, done) { done(null, { id : user.id, isAdmin : user.isAdmin // or some other property/check }); }); // used to deserialize the user passport.deserializeUser(function(user, done) { var table = user.isAdmin ? 'register' : 'users'; connection.query('select * from ?? where id = ?', [ table, user.id ], function(err, rows) { if […]

Node.js Passport Facebook身份validation没有电子邮件返回

我正在尝试使用来自node.js的护照设置Facebook身份validation。 当我运行该应用程序,并去/ auth /脸书,我去脸书页面给予Facebook的许可,以返回我的电子邮件。 但是,当我点击确定后,我得到一个页面(callback),说:“没有电子邮件与此帐户关联! 根据代码,这意味着profile.emails为空。 我错过了什么? 这些是我启动应用程序时显示的警告。 我不知道他们是否是问题。 express-session deprecated undefined resave option; provide resave option auth.js:44:37 express-session deprecated undefined saveUninitialized option; provide saveUninitialized option auth.js:44:37 这是授权码。 我正在阅读edx的介绍MEAN堆栈课程M101X。 function setupAuth(User, app) { var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; // High level serialize/de-serialize configuration for passport passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(id, […]