在 Node.js(Express)Facebook 画布应用程序中获取signed_request
Get signed_request in Node.js (Express) Facebook canvas app
有没有办法在Node.js Facebook页面标签应用程序中获取和解析signed_request?我需要知道页面 ID 以及用户是否喜欢该页面...
我不久前做了这个,最终写了一个小库来做到这一点。原始的CoffeeScript可以在 https://gist.github.com/fbef51815ab6f062b51a#file_signed_request.coffee 找到,这是一个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
相关文章:
- 使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
- 在openshift node js应用程序中获取请求
- 如何在构建node-webkit应用程序后获取外部资源
- PHP文件没有't从Javascript应用程序获取$_POST
- 通过web应用程序获取客户端监视器的分辨率
- JavaScript从应用程序获取SharePoint联机列表
- 从Windows8JS应用程序获取仅HTTP cookie
- 从我的 MVC 应用程序获取会话值到我的 Javascript 中
- 如何从Web JavaScript应用程序获取桌面C#程序中的变量
- 如何使用 NPM 为您的 Angular 应用程序获取所有依赖项
- 从基本应用程序获取 angularjs 错误
- 从服务器主干.js应用程序获取数据
- 我只想让我的应用程序获取一个访问令牌,用javascript/jquery读取公共照片库
- 从其他网络应用程序获取Cookie
- 如何为spotify应用程序获取专辑类型
- 将数据从安卓应用程序获取到远程数据库的最佳方式是什么
- 使用Javascript SDK在Facebook中使用相同的应用程序获取好友列表
- 打开Web分析与Node.JS Web应用程序.获取错误'TypeError: doc is null'
- 谷歌云消息:用JavaScript从Cordova混合应用程序获取RegistrationId
- 如何在不使用ActiveX控件的情况下从应用程序获取当前登录的用户名