Tag: facebook

我如何将Facebook爬虫机器人redirect到另一个网页?

我已经开发了由PreactJS完成的小网站,它有一些主要网站的部分(PHP)。 众所周知,Facebook bot在共享时无法抓取javascript预渲染内容。 这就是为什么我要redirect为让Facebook的机器人抓取主要网站(PHP),同时分享由NodeJS / ExpressJS PrePreJJS完成的网站链接如下: 如果用户像“ https://www.mywebsite.com/category/trips/10 ”共享,我想要nodejs / expressredirect“ https://main.mywebsite.com/category/trips/10 ”。 谁能告诉我,我怎么能这样expressjs级别如下: app.use('/*', function(req, res){ if(req.headers['user-agent'] === 'facebookexternalhit/1.1') { } });

如何在没有会话的Facebook Passport之后redirect到之前的URL

我试图redirect回到引用标题中的链接,但在Facebookcallback请求不包含引用标题。 app.get( // referer present '/login/facebook', passport.authenticate('facebook', { scope: ['email'], session: false }), ); app.get( // referer not present '/login/facebook/return', passport.authenticate('facebook', { failureRedirect: config.CLIENT_URI, session: false }), (req, res) => { const { secret, expiresIn } = config.jwt; const id = Array.isArray(req.user) ? req.user[0].id : req.user.id; // Redirect to client const token = jwt.sign({ id […]

护照本地策略 – 不通过callback

我认为我制定了一个像以前一样的许多人的标准护照本地战略。 我已经parsing了表单,试过enctype = "multipart/urlencoded" ,大多数人提到的方式。 但是, passport.serializeUser仍然没有被触发。 现在,它可以redirect到主页,但是,在控制用户时,它是未定义的。 const env = require('dotenv').load(), config = require( __dirname + '/config.json' )[process.env.NODE_ENV], config_web = config.web, config_fb = config.fb, _WEB_PORT = config_web.port, _WEB_HOST = config_web.host, _FB_ID = config_fb.fid, _FB_SECRET = config_fb.secret; const express = require('express'), app = express(), compression = require('compression'), ejs = require('ejs'), cookieParser = require('cookie-parser'), fs = […]

如何在我的应用程序中使用Facebooklogin

api / users.js var fb = { clientID: 'xxxxxxxxxxxxxxxx', clientSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', callbackURL: 'http://localhost:4268/auth/facebook/callback' }; var fbCallback = function(accessToken, refreshToken, profile, cb) { console.log(accessToken, refreshToken, profile); }; passport.use(new FacebookStrategy(fb, fbCallback)); router.get('/', passport.authenticate('facebook', {scope:"email"})); router.get('/auth/facebook/callback',function(req, res) { res.send("logged in"); }); 我已经把这个代码放在名为users.js的文件夹api ,当我做Facebooklogin时,我使用的是localhost:4268/api/user/ 。 login后,我期待消息“login”,但它不是。 callbackurl中是否有任何错误?

Heroku node.js facebook设置问题

我采取了Facebook的例子,但它确实使用旧版本的库,我不得不使用新版本的快递,因为我使用节点v0.6.6。 当我尝试启动应用程序时,我得到错误:无法find模块'restler'。 有没有人得到这个新版本的工作?

NodeJS everyauth获取访问令牌

我正在尝试为NodeJS使用FB API + everyauth模块获取access_token,然后使用Facebook_Graph_API模块实现服务器端图API请求(需要访问令牌)。 根据everyauth页面: 然后,从您的视图中,您将有权访问以下helper方法附加到助手everyauth : everyauth.loggedIn everyauth.user – 与会话关联的用户文档 everyauth.facebook – 这相当于存储在req.session.auth.facebook ,所以你可以做的事情,如… everyauth.facebook.user – 返回从OAuth提供者提供的用户json。 everyauth.facebook.accessToken – 代表用户返回OAuth提供者提供的access_token,用于授权的API调用。 而且你也得到了其他模块的模式 – 例如, everyauth.twitter.user , everyauth.github.user等 在我的.jade模板中,我可以使请求很好: – if (everyauth.facebook) h3 Facebook User Data p= JSON.stringify(everyauth.facebook.user) p= 'facebook access token is '+ everyauth.facebook.accessToken 我的问题是,我怎样才能从服务器端JavaScript获取访问令牌? 我注意到了 app.get('/', function (req, res) { res.render('home'); console.log(req.sessionStore.sessions.); }); req对象确实包含access_token值,但相应的JSON对于几十个API来说是非常难以parsing的,并不是真正实用的。 […]

无法在iOS Facebook SDK中将access_tokenvalidation为PassportJS

我正在尝试使用Facebook iOS sdk与PassportJS(服务器是NodeJS)我成功地设法在我的iOS应用程序上使用Facebooklogin。 接下来我要做的是将访问令牌移交给服务器,并从那里进行validation。 不幸的是它根本不起作用。 怪异的部分是,我的网站,它工作正常。 我只是使用callbackURL将令牌发布到服务器。 所以在代码中,Facebooklogin后会发生什么(工作) /* * Callback for session changes. */ – (void)sessionStateChanged:(FBSession *)session state:(FBSessionState) state error:(NSError *)error { switch (state) { case FBSessionStateOpen: if (!error) { // We have a valid session NSString *token = session.accessTokenData.accessToken; NSLog(@"User session found: %@", token); [[NSNotificationCenter defaultCenter] postNotificationName:nGotFacebookSession object:nil userInfo:@{ @"token": token }]; } […]

从节点js调用另一个文件

我有一个名为node.js的文件: var net = require('net'); var crypto = require('crypto'); //sjcl var sjcl = require('./sjcl'); //retrive fb profile var loadFb = require('./loadFb.js'); var loadFeed = require('./loadFeed.js'); //read json user file var fs = require('fs'); var text = fs.readFileSync(__dirname + '/users','utf8'); var HOST = 'localhost'; var PORT = 7000; net.createServer(function(sock) { // We have a connection – […]

由于“AuthorizationError”,未能从passport-facebook发现服务器错误

我遇到了一些与passport-facebook和nodejs / express有关的问题。 成功login处理得很好。 但是,由于某种原因,当一个FB连接login失败时,我的应用程序会抛出一个服务器错误,这个错误不会被捕获,并返回状态500.我相信我使用了一个相当标准的护照configuration,所以我有点卡住了成为问题。 在这种情况下,为了创build一个错误,我从另一个应用程序的testing用户login到我的沙盒应用程序。 错误/堆栈跟踪表示错误是在我没有触及的模块代码中: 在Strategy.OAut2(/用户/用户名/Sites/node_projects/applicationname/node_modules/passport-facebook/lib/strategy.js:84:41)(/Users/username/Sites/node_projects/applicationname/node_modules/passport/lib/passport/middleware/authenticate.js (/ Users / username / Sites / node_projects)上的Passport.authenticate(/Users/username/Sites/node_projects/applicationname/node_modules/passport/lib/passport/middleware/authenticate.js:244:7) /applicationname/node_modules/express/lib/router/index.js:164:37)param(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:138:11)at在Router._dispatch(/ Users / username / Sites / node_projects)传递(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:145:5) /applicationname/node_modules/express/lib/router/index.js:173:5)在Object.router(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:33:10 )(/Users/username/Sites/node_projects/applicationname/node_modules/express/node_modules/connect/lib/proto.js:193:15) 这是非常标准的路线: app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/#', failureRedirect: '/#login' })); req.query是 {"error_code":"2102","error_message":"User is not a test user owned by the application"} 在阅读了这个固定的问题之后( https://github.com/jaredhanson/passport-oauth/issues/16 ),我添加了中间件,以便req.query是: {"error_code":"2102","error_message":"User is not a test user […]

Node.js https.get()不返回Facebook访问令牌

我试图在我的node.js应用程序中设置一个Facebookloginstream,但由于某种原因,当我使用节点的https.get()时,我不能从Facebook API返回访问令牌。 当我使用curl时,我可以获得访问令牌,所以我不确定哪个节点的做法不同。 相关代码: var express = require("express"); var https = require("https"); var app = express(); app.route("/") .all(function(req, res, next) { res.sendfile("index.html"); }); app.route("/login") .get(function(req, res, next) { res.redirect("https://www.facebook.com/dialog/oauth?" + "client_id={my_client_id}&" + "redirect_uri=http://localhost:3000/auth"); }); app.route("/auth") .get(function(req, res, next) { var code = req.query.code; https.get("https://graph.facebook.com/oauth/access_token?" + "client_id={my_client_id}" + "&redirect_uri=http://localhost:3000/auth" + "&client_secret={my_client_secret}" + "&code=" + code, function(token_response) […]