Skip to content

Instantly share code, notes, and snippets.

@simenbrekken
Created April 8, 2013 04:17
Show Gist options
  • Select an option

  • Save simenbrekken/5334211 to your computer and use it in GitHub Desktop.

Select an option

Save simenbrekken/5334211 to your computer and use it in GitHub Desktop.
Facebook signed request middleware
var crypto = require('crypto')
module.exports = function(secret) {
return function(req, res, next) {
var signedRequest = req.body.signed_request
if (signedRequest) {
var parts = signedRequest.split('.', 2)
var signature = parts[0]
var payload = parts[1]
var computedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('base64')
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/\=/, '')
if (signature != computedSignature) return req.next(400)
req.facebook = JSON.parse(new Buffer(payload, 'base64').toString('ascii'))
}
next()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment