Advertisement
printesoi

Untitled

Jun 28th, 2011
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 1.58 KB | None | 0 0
  1. class PagesController < ApplicationController
  2.   require 'base64'
  3.   require 'openssl'
  4.   require 'active_support'
  5.   require 'net/http'
  6.  
  7.   def canvas
  8.     @app_id = '176818735711209'  
  9.     @secret = 'dc1e1300b441bf7a664b37f6593dd608'
  10.     @fb_uri = 'https://www.facebook.com/dialog/oauth'
  11.     @client_id = '176818735711209'
  12.     @redirect_uri = 'http://empty-spring-91.heroku.com/canvas'
  13.     @scope = 'email,user_birthday,friends_birthday'
  14.     @response_type = 'token'
  15.     @title = 'ika app'
  16.    
  17.     #@query = parse_signed_request(request.query_string,@secret)
  18.   end
  19.  
  20.   private
  21.  
  22.     def base64_url_decode(str)
  23.      str += '=' * (4 - str.length.modulo(4))
  24.      Base64.decode64(str.tr('-_','+/'))
  25.     end
  26.  
  27.     def parse_signed_request(signed_request,secret)
  28.       encoded_sig, payload = signed_request.split('.')
  29.       sig = base64_url_decode(encoded_sig)
  30.       data = ActiveSupport::JSON.decode(base64_url_decode(payload));
  31.  
  32.       if data["algorithm"].upcase != "HMAC-SHA256"
  33.         logger.debug "Unknow algorithm. Expecting HMAC-SHA256"
  34.         return nil
  35.       end
  36.  
  37.       expected_sig = OpenSSL::HMAC.digest('sha256', payload, secret)
  38.  
  39.       if sig != expected_sig
  40.         logger.debug "Bad signed JSON signature!"
  41.         return nil
  42.       end
  43.  
  44.       return data
  45.     end
  46.  
  47.     def parse_request(query_string)
  48.       query_string.split(/&/).inject({}) do |hash, setting|
  49.         key, val = setting.split(/=/)
  50.         hash[key.to_sym] = val
  51.         hash
  52.       end
  53.     end
  54.  
  55.     def get_content(url)
  56.       Net::HTTP.get_response(URI.parse(url)).body
  57.     end
  58.  
  59. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement