def parse_signed_request(input)
encoded_sig, encoded_envelope = input.split('.', 2)
signature = base64_url_decode(encoded_sig).unpack("H*").first
envelope = MultiJson.decode(base64_url_decode(encoded_envelope))
raise "SignedRequest: Unsupported algorithm #{envelope['algorithm']}" if envelope['algorithm'] != 'HMAC-SHA256'
hmac = OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA256.new, client.secret, encoded_envelope.tr("-_", "+/"))
raise 'SignedRequest: Invalid signature' if (signature != hmac)
return envelope
end