Tag: facebook graph api

通过Facebook的graphics节点JS发布post

我目前正在寻找通过创build一个自定义应用程序,使我可以轻松发布我的Facebook页面(不是我的个人时间表)的状态更新自动化一些任务。 我的后端在NodeJS上运行。 我的客户端代码具有以下内容: window.fbAsyncInit = function() { FB.init({ appId : 'xxxxxxxxxxxxx', // App ID channelUrl : '//xxxxxxxxxxx, // Channel File status : true, // check login status cookie : true, // enable cookies to allow the server to access the session xfbml : true // parse XFBML }); // Additional init code here FB.getLoginStatus(function(response) { […]

第三方API调用的node.js应用程序级速率限制

我正在构build的应用程序会对Facebook Graph API进行大量调用(但它可能是任何带有速率限制的API)。 为了论证的缘故,假设每10分钟有600个请求。 我正在使用https://github.com/jhurliman/node-rate-limiter来限制个人线程,但我需要做的是在macros应用程序级别限制所有Facebook API调用的速率限制,以便将应用程序作为整体不超过这个限制。 我真的不知道如何做到这一点。 我对节点相当陌生,没有任何解决scheme的概念,甚至看起来像。 知道Facebook的速率限制是每个应用程序还是每个经过validation的用户,这将是一件好事。 我假设的应用程序,因此这个问题。

MEAN堆栈 – 如何允许API访问权限只有login(电子邮件/密码和Facebooklogin)的用户

我已经在网上阅读了一整天,发现所有的解决scheme都是局部的而不是重点。 我有一个API写在节点和expression – (/ api / plans /)和(api / users /)。 目前,我已经能够实现一个简单的电子邮件和密码注册和loginfunction。 如果用户成功login,我在节点服务器上生成一个令牌并将其发回到Angular Front端。 但是我的API可以在没有任何身份validation的情况下访问,我想改变它。 我想限制只有我login的前端(Angular)用户的API访问。另外,为了让用户注册/login,除了给我一个简单的电子邮件和密码注册,我已经有了,我想给一个单点loginFacebook也是如此。 我正在考虑使用Passport-Facebook战略,这将给我的Facebook访问令牌,但我失去了如何将Facebook访问令牌与我现在生成的电子邮件/密码令牌集成,然后如何使用令牌来保护我的API端点只能login用户。 寻找build议,如何最好地去做。

Facebook的使者bot错误“TypeError:不能读取未定义的属性”0“。

我正在尝试使用NodeJS,Express和Heroku服务器来创build一个Facebook chatbot。 我在Heroku上创build了我的webhook,并通过Facebook进行了validation和保存。 然后我运行这个代码来连接我的webhook到Facebook。 curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps?access_token=<token>" 这个返回{success:true}。 那么我开始添加代码来回复传入的消息,但我似乎无法得到它发送的信息。 每当我发送消息,我都没有回复。 一切都连接和运行,但这个错误我得到“TypeError:不能读取未定义的属性'0'是因为我没有得到从Facebook发送到我的webhook的消息信息。 这是空的代码行: messaging_events = req.body.entry[0].messaging; 这是我的完整代码: var express = require('express'); var bodyParser = require('body-parser'); var request = require("request") var app = express(); var port = process.env.PORT || 3000; // body parser middleware app.use(bodyParser.urlencoded({ extended: true })); app.get('/', function (req, res) { if (req.query['hub.verify_token'] […]

Facebook护照策略返回500错误

我试图做一个login或login用户使用passport.js facebook战略连接他们的帐户与Facebook,并保存他们的profile photo, id, gender, timeline cover and token根据userSchema(在user.js模型如下所示。 我尝试了很多组合,但仍然从Facebook获得500错误,或者如果显示Facebook身份validation,Facebook无法返回(代码组合,我试过)并保存该对象。 PS : 我在Facebook上input了正确的callbackurl PPS:请参阅我的更新routes.js和更新下面的passport.js 。 这是我的routes.js文件: app.get('/auth/connect/facebook', passport.authenticate('facebook-connect', { authType: 'rerequest', scope: ['id', 'cover', 'gender', 'photos'] })); app.get('/auth/connect/facebook/callback', passport.authenticate('facebook-connect', { successRedirect: '/profile/configure', failureRedirect: '/profile/congigure' // failureFlash: true })); 我的facebook-connect的passport.js文件: passport.use('facebook-connect', new FacebookStrategy({ clientID: configAuth.facebookAuth.clientID, clientSecret: configAuth.facebookAuth.clientSecret, callbackURL: configAuth.facebookAuth.callbackURL, profileFields: ['id', 'cover', 'gender', 'photos'], enableProof: true […]

社交authentication – 在FE或BE方面做得更好?

如果我们想要进行社交authentication(例如Facebook或Google ),那么哪一方最好将其整合。 后端侧还是前端侧? 对于后端我们有NodeJS ,我们可以使用PassportJS来做到这一点,对于前端我们有Angular2.0 ,也有插件可以做到这一点。 我有点困惑这个代码应该驻留在哪一边。 如果有人对此有任何看法,请让我知道。

HTML5 Websocket + Node.js实时通知系统

在过去的几周里,我用socket.io构build了一个使用HTML5 Websockets和node.js的小型通知系统。 还有一些事情我还没有解决。 我已经阅读了使用node.js的实时通知应该是最好的性能解决schemevs长轮询等,因为非阻塞I / O操作。 现在假设我们必须通知这个用户的朋友。 就像“我买了一个新的iPhone”。 我如何教node.js实时通知特定用户1:n? 直到知道我只有发送和接收消息1-1通信。 这意味着我必须首先检查facebook api friendlist,并找出哪个facebook_id以某种方式与哪个socket_id连接。 然后检查用户的隐私设置,如果他想接收通知,然后发送并保存到数据库中。 所以对我来说,这似乎不是最有效的解决scheme… 目前, 我会使用mongo-db本地驱动程序的node.js和数据库操作完成由服务器的javascript。 我仍然需要执行facebooks javascript sdk来获取好友列表,但是我会遇到用户隐私设置的问题。 这是不是破坏了非阻塞I / O的所有优点? 你怎么解决这个问题呢? 对我来说,这似乎很复杂。 非常感谢你。

在Node.js中将mikeal的请求和http / https模块进行比较

对于我的应用程序,我需要从另一个API端点读取,就像Facebook一样。 这就是我现在正在做的事情: var https=require('https'); var querystring=require('querystring'); var _my_lat=37.78583526611328; var _my_lng=122.40641784667969; var _my_fb_access_token ='somebigvaluefromfacebook'; var params = { type: 'place', center: _my_lat+','+_my_lng, access_token: _my_fb_access_token }; var url = 'https://graph.facebook.com/search?'+querystring.stringify(params); https.get(url, function(res) { var msg = ''; res.on('data', function(chunk) { msg+=chunk; }); res.on('end', function() { var v = JSON.parse(msg); //do stuff with v }); }).on('error', function(e) { […]

如何从node-webkit获取无托pipe页面的桌面应用程序的访问令牌?

我正在尝试使用node-webkit创build一个桌面应用程序。 这个应用程序的一部分需要使用Facebook获取/发布一些内容到任何个人资料(Facebook用户),使用我的个人电脑上的桌面应用程序。 关于facebook api文档( https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.0 ),我必须手动实现loginstream程并使用以下URI作为redirectURI: https://www.facebook.com/connect/login_success.html : https://www.facebook.com/connect/login_success.html 目前,在我的node-webkit应用程序中,通过一个子窗口(一个popup窗口),用户可以loginFacebook并授权我的桌面应用程序与其configuration文件进行交互。 这是代码的一部分: var url = "https://www.facebook.com/dialog/oauth?client_id=myclientID&redirect_uri=https://www.facebook.com/connect/login_success.html&response_type=token&scope=publish_actions"; loginWindow = window.open(url, 'Login facebook', 'location=yes,toolbar=yes,menubar=yes,directories=yes,status=yes,resizable=yes,scrollbars=yes,height=480,width=640', false); 之后,用户被redirect到下面的URI,正如文档中提到的,访问令牌显示正确: https://www.facebook.com/connect/login_success.html#access_token=theBigTokenString&expires_in=3864 。 但它只出现几秒钟,之后,该url被replace为https://www.facebook.com/connect/blank.html#_=_ (带有安全警告消息)。 我读过一些build议添加eventListener像hashchange到打开的窗口,以捕获访问令牌。 但是,在子窗口内部redirect后,我不再可以通过JavaScript与它进行交互。 所以最后,我无法获得子窗口已经检索的访问令牌,并使其可见几秒钟。 任何人都可以帮助我得到这个用户访问令牌node-webkit? 我真的不想在我的桌面应用程序和Facebook之间使用服务器(用于托pipe网页)。 预先感谢您的帮助。

发布多个照片到一个职位

我一直在试图创build一个应用程序,需要多张照片才能附加到一个post。 这些是我尝试过的以下尝试, 首先,我使用了JS SDK来实现不同function的Facebook-node-sdk ,但官方的Js Sdk没有file upload的选项,然后我通过form-data的帮助将附件/插入图片本身添加到HTTP POST ,用下面的代码 – var form = new FormData(); form.append('file', fs.createReadStream(picPaths[0])); form.append('message', "Hello"); //Put message var ACCESS_TOKEN = "ACCESS_TOKEN"; var options = { method: 'post', host: 'graph.facebook.com', path: '{Object-ID}/photos' + '?access_token=' + ACCESS_TOKEN, headers: form.getHeaders(), } var request = https.request(options, function(res) { console.log(res, false, null); }); form.pipe(request); request.on('error', function(error) […]