Tag: passport facebook

我无法使用passport-facebook来validation路线

下午好。 我前几天尝试使用express和passport-facebookvalidation路线,但没有成功。 而在客户端,我正在使用VueJs。 如果有人能帮我解决这个问题,我会很开心的。 我将在下面发布我的代码: express.js 'use strict'; let express = require('express'); let bodyParser = require('body-parser'); let cors = require('cors'); let cookieParser = require('cookie-parser'); let session = require('express-session'); let passport = require('passport'); let load = require('express-load'); module.exports = () => { let app = express(); //configurar a porta em que o express irá rodar app.set('port', […]

我怎样才能结合智威汤逊和护照Facebook?

我使用passportJS创build了一个快速应用程序,我试图使用JSON Web Tokens来validation我的api: 该应用程序同时具有本地和facebook用户,在mongoose模式中一起定义: var mongoose = require('mongoose'); var bcrypt = require('bcrypt-nodejs'); var UserSchema = mongoose.Schema({ name: { type: String }, password: { type: String }, local: { type: String, enum: [ '0', '1' ] }, fbId : String, fbToken : String, fbEmail : String, fbName : String }); UserSchema.pre('save', function(callback) { var user = […]

使用Passport FacebookvalidationApollo GraphQL API

我有一个客户端服务器和一个API,都使用阿波罗 。 当用户使用Facebooklogin时,我想向我的客户端服务器发送一个令牌,然后将这个令牌附加到对API所做的每个请求的头部。 没有使用会话。 下面是API的外观,当用户使用Facebooklogin(我也在后台检查数据库中的用户)时,这会成功生成令牌。 // API running on port 3010 app.use(expressJwt({ secret: authConfig.jwt.secret, credentialsRequired: false, getToken: req => req.cookies.id_token, })); app.use(passport.initialize()); app.get('/login/facebook', passport.authenticate('facebook', { scope: ['email'], session: false }), ); app.get('/login/facebook/return', passport.authenticate('facebook', { failureRedirect: 'http://localhost:3000/login', session: false }), (req, res) => { const expiresIn = 60 * 60 * 24 * 1; // 1 […]

护照facebook战略投掷数据必须是使用Node.js的string

我正在使用Node.js和passport facebook strategy来login客户端的应用程序。 我跟着护照文件,但仍然有一个错误: 数据必须是一个string或缓冲区 。 策略redirect到Facebook页面,但testing后接受应用程序的条件,它redirect到主页,应用程序抛出此错误: StatusCodeError: 500 – {"error":"Data must be a string or a buffer"} 这是我写代码的auth.js代码。 我正在使用jsonwebtoken模块来签署用户ID。 exports.facebookStrategy = new FacebookStrategy({ clientID: config.auth.facebook.clientID, clientSecret: config.auth.facebook.clientSecret, callbackURL: config.auth.facebook.callbackURL, profileFields: ['id', 'displayName', 'email'] }, function (accessToken, refreshToken, profile, done) { var userProfile = { username: profile._json.id, name: profile._json.name, email: profile._json.email, facebook: true } findOrCreate(userProfile, […]

来自facebook的特定用户信息使用passport-facebook

我正在使用OAuth的passport-facebook,并从facebook获取用户信息。 但是我所得到的只是一些基本的信息(即名字,姓氏)。 我想要像userEmail和friendList的信息。 我目前的FacebookStrategy是 – passport.use(new FacebookStrategy({ clientID: configAuth.facebookAuth.appID, clientSecret: configAuth.facebookAuth.appSecret, callbackURL: configAuth.facebookAuth.callbackUrl }, function(accessToken, refreshToken, profile, done) { process.nextTick(function() { User.findOne({'facebook.id': profile.id}, function(err, user) { if(err) return done(err); if(user) return done(null, user); else { var newUser = new User; console.log(profile); newUser.facebook.id = profile.id; newUser.facebook.token = accessToken; newUser.facebook.name = profile. displayName; newUser.save(function(err) { if(err) throw […]

如何向客户端发送Facebooklogin后创build的JSON Web Token?

我试图find一种方法来发送在服务器端创build的JSON Web令牌到客户端,以便客户端可以将其存储在HTML5本地存储。 具体来说,我的应用程序使用Passport进行身份validation,使用NodeJS / ExpressJS构build,有两种用户:本地用户和Facebook用户。 当本地用户用他们的用户名和密码填写login表单时,客户机要求服务器进行authentication,服务器向客户机发送JWT,然后存储在本地存储器中。 $.ajax({ url: "/authenticate", type: 'POST', data: user, dataType: "json", success: function(auth){ localStorage.setItem("token", auth.token); window.location.href = '/welcome.html'; }, failure: function(errMsg) { alert("falure"); window.location.href = '/login.html'; } }); 然后,用户被redirect到一个Welcome页面,该页面在本地存储器中查找以查找令牌,以从数据库中请求一些数据。 $.ajax({ url: "/protectedEndpoint", type: 'GET', dataType: 'json', beforeSend: function (xhr){ xhr.setRequestHeader('Authorization', localStorage.token); }, success: function (data) { … }, error: function (e) […]

Facebook身份validation无法正常工作(部署在OpenShift上)

我构build了一个使用Facebook身份validation的应用程序,并在从本地主机运行时按预期工作。 但是,将应用程序部署到OpenShift并使用正确的域名进行testing后,服务器不会保存用户。 开发中的Facebook设置: 生产中的Facebook设置: OpenShift设置: rhc set-env FACEBOOK_ID=id -a <appname-id> rhc set-env FACEBOOK_SECRET=secret -a <appname-secret> 在文档上说,我需要添加这个,但它不起作用: 您还需要设置DOMAIN环境variables rhc config:set DOMAIN=<appname>.rhcloud.com 我重新启动服务器,但始终如一: rhc app-restart -a <appname> 我会很感激任何build议,甚至对我应该问什么问题有任何想法。 更新1 所以我检查日志和GET的唯一区别是: OpenShift GET /auth/facebook 302 3ms – 510b GET /<appname>.rhcloud.com/auth/facebook/callback?code=XXXXXX 200 5ms 本地主机 GET /auth/facebook 302 10ms – 444b GET /auth/facebook/callback?code=XXXXXXXX 302 1360ms – 58b 在OpenShift上它添加了域,有什么想法?

Passport.js,Express.js和Angular.js路由:它们如何共存?

我很抱歉这个问题有点长,但是我已经研究了一段时间,真的需要解释所有的故事。 背景 :基于MEAN堆栈的应用程序,试图使用Passport.js来授权 Facebooklogin。 Passport.js 指南后,我实现了类似于: // HTML <a href="/connect/facebook" target="_self">Add a Facebook login</a> // send to facebook to do the authentication app.get('/connect/facebook',isLoggedIn, passport.authorize('facebook', { scope : 'email' }) ); // handle the callback after facebook has authorized the user app.get('/connect/facebook/callback', passport.authorize('facebook', { successRedirect : '/profile', failureRedirect : '/profile' })); 注意html中的target=_self以跳过Angular路由。 显然,授权工作正常。 但是,redirect不起作用,因为路由由Angular处理。 授权后,我从来没有登陆/profile (但在默认的Angular路线)。 […]

如何在服务器身份validation后使用JSON Web令牌提供前端?

到目前为止,我只处理服务器呈现的应用程序,在用户通过用户名/密码login或使用OAuth提供程序(Facebook等)后,服务器只是在redirect到相关页面时设置会话cookie。 然而,现在我试图用一种更现代的方法构build一个应用程序,在前端和一个JSON API后端上都有React。 显然这个标准的select是使用JSON Web令牌进行身份validation,但是我很难解决如何为客户端提供JWT,因此可以将其存储在会话/本地存储或任何地方。 举例说明更好: 用户点击链接( /auth/facebook )通过Facebooklogin 用户被redirect并显示Facebooklogin表单和/或权限对话框(如有必要) Facebook将用户redirect到/auth/facebook/callback ,授权码被拖拽,服务器通过访问令牌和一些关于用户的信息进行交换 服务器使用info在数据库中查找或创build用户,然后创build一个包含用户数据相关子集(如ID)的JWT, ??? 在这一点上,我只是希望用户被redirect到React应用程序的主页(比方说/app ),因此前端可以接pipe。 但我不能想到一个(优雅)的方式来做到这一点,而不会丢失JWT,除了把它放在redirect的查询string中( /app?authtoken=… ) – 但是会显示在地址栏中,直到我用replaceState()或者其他方法手动删除它,并且对我来说似乎replaceState() 。 真的,我只是想知道这是如何做的,我几乎可以肯定我在这里失去了一些东西。 服务器是节点(Koa与护照),如果有帮助。 编辑:为了清楚,我问了什么是使用Passport OAuthredirectstream后 ,提供一个令牌给客户端(这样可以保存)的最佳方法。

如何在angular度客户端处理passport-facebookcallback?

我正在开发一个MEAN应用程序。 我正在使用护照进行身份validation – 本地,Facebook和谷歌战略。 我正在使用angularjs客户端。 所有的路由都在客户端处理。 我只使用服务器数据apis。 当使用passport-facebook策略时,我按照护照文档在节点服务器上使用下面的代码。 app.get('/auth/facebook',passport.authenticate('facebook-auth', { scope : ['email'] })); app.get('/auth/facebook/callback',passport.authenticate('facebook-auth', { successRedirect : '/home', failureRedirect : '/login', scope:['email'] })); 我面对的问题是当用户点击“使用Facebooklogin”button <a href="/auth/facebook" class="btn"><i class="fa fa-facebook"></i> Sign in using Facebook</a> 客户端将访问“/ auth / facebook”路线,最终将用户redirect到Facebook页面以validation用户的凭证。 validation成功后,用户将被redirect到按照“successRedirect”值定义的路由“/ home”。 现在的事情是,我想使用自定义callback函数,而不是定义成功或失败的redirect。 它将如下所示: app.get('/auth/facebook/callback',passport.authenticate('facebook-auth', function(err,user,info){ if(err){ throw err; } else if(user === 'userexists'){ res.json({ 'state':false, 'message':'User […]