OmniAuth.config.full_host 的多个值

Multiple values for OmniAuth.config.full_host

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

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

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

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

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

config/initializers/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

另一种选择可能是覆盖 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方法将用于其他策略。