我使用watir gem在Sinatra应用程序中使用omniauth-salesforce gem登录salesforce。使用普通浏览器时,它遵循303重定向就好了。但是,phantomjs的Watir :: Browser实例不会。
post '/authenticate/:provider' do
case params[:provider].downcase
when 'salesforce'
auth_params = {
:display => 'page',
:immediate => 'false',
:scope => 'full',
}
auth_params = URI.escape(auth_params.collect{|k,v| "#{k}=#{v}"}.join('&'))
redirect "/auth/salesforce?#{auth_params}"
when 'box'
oauth_url = Boxr::oauth_url(
URI.encode_www_form_component(CredService.creds.box.utility_app.token),
client_id: CredService.creds.box.utility_app.client_id
)
redirect oauth_url
when 'sandbox'
auth_params = {
display: 'page',
immediate: 'false',
scope: 'full',
}
auth_params = URI.escape(auth_params.collect{|k,v| "#{k}=#{v}"}.join('&'))
redirect "/auth/salesforcesandbox?#{auth_params}"
end
end
当我通过box usig Watir::Browser.new(:phantomjs)
进行身份验证时,我没有问题导航到登录页面并输入凭据。我相信它是因为重定向路径直接指向app.box.com,而omniauth重定向首先是内部(/auth/salesforce?#{auth_params}
),然后它再次重定向到salesforce域。
对此事的任何想法都将不胜感激。我已经使用了binding.pry
w / byebug并遍历了sinatra / rack代码路径,但我无法确定发生了什么。
here is a link到omniauth-salesforce登录示例页面