在Node.js(Express)Facebookcanvas应用程序中获取signed_request
有什么办法如何获得和parsingNode.js Facebook页面标签应用程序中的signed_request? 我需要知道页面ID,如果用户喜欢的网页…
我刚才做了这个,最后写了一个小图书馆去做。 原始的CoffeeScript可以在https://gist.github.com/fbef51815ab6f062b51a#file_signed_request.coffeefind,这里是一个JavaScript的翻译:
var crypto = require('crypto'); SignedRequest = (function() { function SignedRequest(secret, request) { this.secret = secret; this.request = request; this.verify = this.verify.bind(this); var parts = this.request.split('.'); this.encodedSignature = parts[0]; this.encoded = parts[1]; this.signature = this.base64decode(this.encodedSignature); this.decoded = this.base64decode(this.encoded); this.data = JSON.parse(this.decoded); } SignedRequest.prototype.verify = function() { if (this.data.algorithm !== 'HMAC-SHA256') { return false; } var hmac = crypto.createHmac('SHA256', this.secret); hmac.update(this.encoded); var result = hmac.digest('base64').replace(/\//g, '_').replace(/\+/g, '-').replace(/\=/g, ''); return result === this.encodedSignature; }; SignedRequest.prototype.base64encode = function(data) { return new Buffer(data, 'utf8').toString('base64').replace(/\//g, '_').replace(/\+/g, '-').replace(/\=/g, ''); }; SignedRequest.prototype.base64decode = function(data) { while (data.length % 4 !== 0) { data += '='; } data = data.replace(/-/g, '+').replace(/_/g, '/'); return new Buffer(data, 'base64').toString('utf-8'); }; return SignedRequest; })(); module.exports = SignedRequest;
你可以这样使用:
var verifier = new SignedRequest(clientSecret, signedRequest); verifier.verify() // whether or not the signed request verifies verifier.data // the data from the signed request
- 在Angular Universal应用程序中从ExpressJS获取vaues
- express-validation会抛出一个错误:错误('请提供一个validation模式')
- 为什么会在express.js中导致错误?
- 在Express 2.x中访问Redis insdie路由处理程序
- 节点JSless – 中间件不自动编译
- nodejs – 我发现multithreading或使用多个进程比单个进程慢。 为什么?
- 在node.js(node-orm)中链接模型关系,就像在Rails中一样
- 获取未定义的函数调用Express渲染()
- 如何将会话variables从express / node传递给angular?