Watir gem w / phantomjs不遵循oauth重定向

时间:2016-12-03 00:43:30

标签: ruby phantomjs sinatra omniauth watir

我使用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登录示例页面

0 个答案:

没有答案