Sha256: 7fad9e194fbf9873e0a71a9b2722536ff9fe73e2f59e0d1e3c12799cebbaecc2

Contents?: true

Size: 1.68 KB

Versions: 4

Compression:

Stored size: 1.68 KB

Contents

require 'rubygems'
require 'sinatra'
require 'active_support/json'
require 'net/http'

get '/' do
  # settings
  @app_url         = '<APP_URL>'          # default for local installs: http://localhost:4567
  @client_id       = '<CLIENT_ID>'
  @client_secret   = '<CLIENT_SECRET>'
  @fidor_oauth_url = '<FIDOR_OAUTH_URL>'  # e.g https://fidor.com/oauth
  @fidor_api_url   = '<FIDOR_API_URL>'    # e.g https://fidor.com/api_sandbox, https://fidor.com/api

  # 1. redirect to authorize url
  unless code = params["code"]
    dialog_url = "#{@fidor_oauth_url}/authorize?client_id=#{@client_id}&redirect_uri=#{CGI::escape(@app_url)}&state=1234&response_type=code"
    redirect dialog_url
  end

  # 2. get the access token, with code returned from auth dialog above
  token_url = URI("#{@fidor_oauth_url}/token")
  # GET and parse access_token response json
  res = Net::HTTP.post_form(token_url, 'client_id' => @client_id,
                                       'redirect_uri' => CGI::escape(@app_url),
                                       'code' =>code,
                                       'client_secret'=>@client_secret,
                                       'grant_type'=>'authorization_code')

  resp = ActiveSupport::JSON.decode(res.body)

  # GET current user
  usr_url = "#{@fidor_api_url}/users/current?access_token=#{resp['access_token']}"
  user = ActiveSupport::JSON.decode( Net::HTTP.get URI(usr_url) )
  account_url = "#{@fidor_api_url}/accounts?access_token=#{resp['access_token']}"
  "<h2>Hello #{user['email']}</h2>
   <i>May i present the access token response:</i>
   <blockquote>#{resp.inspect}</blockquote>
   <p>Now use the access token in <br> <a href='#{account_url}'>#{account_url}</a></p>
   "
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fidor_starter_kits-0.3.3 starter_kits/sinatra_plain/example.rb
fidor_starter_kits-0.3.2 starter_kits/sinatra_plain/example.rb
fidor_starter_kits-0.3.1 starter_kits/sinatra_plain/example.rb
fidor_starter_kits-0.3.0 starter_kits/sinatra_plain/example.rb