Я пытаюсь использовать OmniAuth для обработки потока OAuth для приложения Sinatra небольшого размера.Я могу заставить 37signals Oauth работать отлично, но я пытаюсь создать стратегию и для Freshbooks Oauth.
К сожалению, для Freshbooks требуются запросы OAuth для перехода на отдельный субдомен пользователя.Я получаю субдомен в качестве входных данных, и мне нужно постоянно использовать URL-адрес конкретного сайта клиента для всех запросов.
Вот что я пробовал до сих пор.Проблема в том, что новое значение сайта не сохраняется после первого запроса.
Должен быть простой способ добиться этого, но я в замешательстве.
#Here's the setup -
def initialize(app, consumer_key, consumer_secret, subdomain='api')
super(app, :freshbooks, consumer_key, consumer_secret,
:site => "https://"+subdomain+".freshbooks.com",
:signature_method => 'PLAINTEXT',
:request_token_path => "/oauth/oauth_request.php",
:access_token_path => "/oauth/oauth_access.php",
:authorize_path => "/oauth/oauth_authorize.php"
)
end
def request_phase
#Here's the overwrite -
consumer.options[:site] = "https://"+request.env["rack.request.form_hash"]["subdomain"]+".freshbooks.com"
request_token = consumer.get_request_token(:oauth_callback => callback_url)
(session[:oauth]||={})[name.to_sym] = {:callback_confirmed => request_token.callback_confirmed?,
:request_token => request_token.token,
:request_secret => request_token.secret}
r = Rack::Response.new
r.redirect request_token.authorize_url
r.finish
end