OmniAuth.config.full_host的多个值

时间:2015-02-11 12:56:11

标签: ruby-on-rails devise omniauth stripe-payments

我正在尝试在我的SaaS平台上使用Stripe和LinkedIn策略配置Omniauth和Devise。

作为平台的一部分,每个客户都可以拥有自己独特的域名。

我可以让LinkedIn在我的客户端网站上运行,但Stripe要求您在其管理界面中列出所有回调URL的可能性。为了解决这个问题,我通过OmniAuth.config.full_host将www.myapp.com设置为回调网址,但这意味着我有一个静态回调网址,然后通过state参数传递给客户端ID。

这适用于Stripe,但随后LinkedIn开始失败,因为回调域不再与原始请求匹配。

有没有办法只为某些策略设置OmniAuth.config.full_host(即只有Stripe)?

2 个答案:

答案 0 :(得分:1)

配置/初始化/ omniauth.rb

OmniAuth.config.full_host = lambda do |env|
  if env['omniauth.strategy'].is_a?(OmniAuth::Strategies::Stripe)
    #return url for stripe
  else
    #return url for others
  end
end

答案 1 :(得分:0)

另一种选择可能是覆盖OmniAuth::Stragies::Stripe#callback_url

#config/initializers/stripe.rb
module OmniAuth
  module Strategies
    class Stripe
      def full_host
        #return url for stripe
      end
    end
  end
end

原始OmniAuth::Strategy#full_host方法将用于其他策略。