Class: Facebook::SignedRequest
- Inherits:
-
Object
- Object
- Facebook::SignedRequest
- Defined in:
- lib/facebook-signed-request/version.rb,
lib/facebook-signed-request/signed_request.rb
Constant Summary collapse
- VERSION =
"0.2.6"
Class Attribute Summary collapse
-
.secret ⇒ Object
Returns the value of attribute secret.
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#encoded_data ⇒ Object
readonly
Returns the value of attribute encoded_data.
-
#errors ⇒ Object
readonly
Returns the value of attribute errors.
-
#signature ⇒ Object
readonly
Returns the value of attribute signature.
Class Method Summary collapse
-
.encode_and_sign(options) ⇒ Object
Creates a signed_request with correctly padded Base64 encoding.
Instance Method Summary collapse
-
#initialize(request_data, options = {}) ⇒ SignedRequest
constructor
A new instance of SignedRequest.
- #invalid? ⇒ Boolean
- #valid? ⇒ Boolean
Constructor Details
#initialize(request_data, options = {}) ⇒ SignedRequest
Returns a new instance of SignedRequest.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/facebook-signed-request/signed_request.rb', line 22 def initialize( request_data, = {} ) if request_data.respond_to?(:split) @encoded_signature, @encoded_data = request_data.split(".", 2) else @encoded_signature, @encoded_data = nil end @secret = [:secret] || SignedRequest.secret @errors = [] check_for_invalid_arguments @signature = extract_request_signature @computed_signature = compute_signature @payload = extract_request_payload @data = parse_request_playload validate_algorithm validate_signature if [:strict] == true end |
Class Attribute Details
.secret ⇒ Object
Returns the value of attribute secret.
5 6 7 |
# File 'lib/facebook-signed-request/signed_request.rb', line 5 def secret @secret end |
Instance Attribute Details
#data ⇒ Object (readonly)
Returns the value of attribute data.
20 21 22 |
# File 'lib/facebook-signed-request/signed_request.rb', line 20 def data @data end |
#encoded_data ⇒ Object (readonly)
Returns the value of attribute encoded_data.
20 21 22 |
# File 'lib/facebook-signed-request/signed_request.rb', line 20 def encoded_data @encoded_data end |
#errors ⇒ Object (readonly)
Returns the value of attribute errors.
20 21 22 |
# File 'lib/facebook-signed-request/signed_request.rb', line 20 def errors @errors end |
#signature ⇒ Object (readonly)
Returns the value of attribute signature.
20 21 22 |
# File 'lib/facebook-signed-request/signed_request.rb', line 20 def signature @signature end |
Class Method Details
.encode_and_sign(options) ⇒ Object
Creates a signed_request with correctly padded Base64 encoding. Mostly useful for testing.
9 10 11 12 13 14 15 16 17 |
# File 'lib/facebook-signed-request/signed_request.rb', line 9 def encode_and_sign encoded_data = Base64.urlsafe_encode64( .to_json ).tr('=', '') digestor = OpenSSL::Digest::Digest.new('sha256') signature = OpenSSL::HMAC.digest( digestor, @secret, encoded_data ) encoded_signature = Base64.urlsafe_encode64( signature ) encoded_signature = encoded_signature.tr('=', '') "#{encoded_signature}.#{encoded_data}" end |
Instance Method Details
#invalid? ⇒ Boolean
48 49 50 |
# File 'lib/facebook-signed-request/signed_request.rb', line 48 def invalid? !valid? end |
#valid? ⇒ Boolean
44 45 46 |
# File 'lib/facebook-signed-request/signed_request.rb', line 44 def valid? @errors.empty? end |