我正在尝试在我的SaaS平台上使用Stripe和LinkedIn策略配置Omniauth和Devise。
作为平台的一部分,每个客户都可以拥有自己独特的域名。
我可以让LinkedIn在我的客户端网站上运行,但Stripe要求您在其管理界面中列出所有回调URL的可能性。为了解决这个问题,我通过OmniAuth.config.full_host
将www.myapp.com设置为回调网址,但这意味着我有一个静态回调网址,然后通过state
参数传递给客户端ID。
这适用于Stripe,但随后LinkedIn开始失败,因为回调域不再与原始请求匹配。
有没有办法只为某些策略设置OmniAuth.config.full_host
(即只有Stripe)?
答案 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
方法将用于其他策略。