![](/img/trans.png)
[英]Omniauth /auth/facebook/callback.json - request.env[“omniauth.auth”] is nil
[英]request.env[“omniauth.params”] empty during callback phase when using omniauth-stripe-connect
我正在尝试使用omniauth-stripe-connect策略来连接用户帐户,以便我可以在购买期间将资金直接转移到他们的帐户中。
我在初始化器中有以下内容
Rails.application.config.middleware.use OmniAuth::Builder do
provider :stripe_connect, APP_CONFIG[:stripe_connect_client_id],
APP_CONFIG[:stripe_secret_key],
scope: 'read_write',
stripe_landing: 'register'
on_failure { |env| AuthController.action(:failure).call(env) }
end
和以下身份验证控制器中
def stripe_connect
result = request.env["omniauth.auth"]
pass_through_params = request.env["omniauth.params"]
...
# do some stuff
end
然后我启动身份验证过程
http://test.lvh.me:3000/auth/stripe_connect?user_id=980190962&user_subdomain=test
在回调期间,request.env [“ omniauth.auth”]的值正确,但是request.env [“ omniauth.params”]始终为{}。 request.env [“ omniauth.origin”]也为零。
我已经可以在其他情况下使用它(facebook oauth集成)。 不知道为什么这些值未按预期返回。
问题完全与oauth如何设置参数值有关。 通过存储在会话中的值进行管理。 我以为这些值已转发到身份验证服务(在本例中为Stripe),并由该服务返回。
而是将它们放在调用之前的会话中,并在回调阶段附加到oauth值。
我的问题与我对子域的使用有关。 我正在一个子域上发起请求,然后将(回调URL)返回到另一个子域。 由于会话不是跨子域维护的(至少在我们的配置中),因此params信息不可用。
在请求阶段和回调阶段重新处理该过程以使用相同的子域可以解决此问题。
我有一个类似的情况,我在一个子域上发起请求,然后将(回调URL)返回到另一个子域。
我尝试将会话存储配置为使用domain::all接受所有域,但是它不起作用。 我必须使用相同的子域吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.