class AmazonPay::Login
AmazonPay
API
This class allows you to obtain user profile information once a user has logged into your application using their Amazon credentials.
Attributes
client_id[RW]
region[R]
sandbox[RW]
Public Class Methods
new(client_id, region: :na, sandbox: false)
click to toggle source
@param client_id
[String] @optional region [Symbol] Default: :na @optional sandbox [Boolean] Default: false
# File lib/amazon_pay/login.rb, line 23 def initialize(client_id, region: :na, sandbox: false) @client_id = client_id @region = region @endpoint = region_hash[@region] @sandbox = sandbox @sandbox_str = @sandbox ? 'api.sandbox' : 'api' end
Public Instance Methods
get_login_profile(access_token)
click to toggle source
This method will validate the access token and return the user's profile information. @param access_token [String]
# File lib/amazon_pay/login.rb, line 34 def get_login_profile(access_token) decoded_access_token = URI.decode(access_token) uri = URI("https://#{@sandbox_str}.#{@endpoint}/auth/o2/tokeninfo") req = Net::HTTP::Get.new(uri.request_uri) req['x-amz-access-token'] = decoded_access_token http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER response = http.request(req) decode = JSON.parse(response.body) raise 'Invalid Access Token' if decode['aud'] != @client_id uri = URI.parse("https://#{@sandbox_str}.#{@endpoint}/user/profile") req = Net::HTTP::Get.new(uri.request_uri) req['x-amz-access-token'] = decoded_access_token http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_PEER response = http.request(req) decoded_login_profile = JSON.parse(response.body) decoded_login_profile end
Private Instance Methods
region_hash()
click to toggle source
# File lib/amazon_pay/login.rb, line 60 def region_hash { jp: 'amazon.co.jp', uk: 'amazon.co.uk', de: 'amazon.de', eu: 'amazon.co.uk', us: 'amazon.com', na: 'amazon.com' } end