在Heroku上使用自定义域名的OmniAuth导致应用程序错误

3
我在Heroku上有一个应用程序,使用omniauth进行身份验证,当我访问myapplication.heroku.com/auth/open_id,输入我的Google端点并被重定向回来时,可以正确地进行身份验证。
然而,当我访问myapplication.com(已设置自定义域名并为每个其他URL工作),从Google重定向回来后,我会收到Heroku的应用程序错误(我没有尝试其他openid提供者)。
我已经设置了hoptoad,但它没有向我发送任何关于特定错误的通知(可能是因为omniauth是中间件)。除了显示出现错误的URL外,heroku logs中没有任何内容。
这可能无关紧要,但这是一个rails应用程序。
本地主机生产测试正常。
有什么想法?

在启用自定义域名后,我也遇到了这个问题。 - Kenzie
我有完全相同的问题。 - Wilken
2个回答

2
我不确定这是否解决了你的问题,但是我在我的应用程序中遇到了一个类似的问题(使用Facebook、Rails和Heroku进行OAuth)。原来问题是由以下代码行引起的:
session["devise.facebook_data"] = env["omniauth.auth"]

该段文字的意思是:在用户还没有帐户并且必须填写注册表格以便持久化之前,该程序将OAuth数据存储在会话中。这导致了一些用户的omniauth.auth哈希值太大而无法存储在会话cookie中,从而引发了ActionDispatch :: Cookies :: CookieOverflow错误(这也没有被Hoptoad / Airbrake报告)。因此,在保存到会话之前,我通过预处理哈希并丢弃不需要的内容来解决了这个问题。也许你的错误与此有关?

天啊!env["omniauth.auth"] 包含所有基础信息!朋友、工作信息、赞等。是的,这可能会超过4Kb的限制。 - Carlos Ricardo

0

我遇到了同样的问题。

myurl.com 返回502错误,而.herkouapp.com却正常工作。

我设置了

use Rack::Session::Cookie

以启用会话cookie,但由于某种原因,Heroku上的Ngnix代理不喜欢这个设置。当我将其更改为:

use Rack::Session::Cookie, :key => 'rack.session', :path => '/', :expire_after => 14400, :secret => 'change_me'

即确保哈希中没有域键时,问题得到解决。


实际上,我认为您需要从Cookie选项中删除域。这对我有用: use Rack :: Session :: Cookie,:key =>'rack.session', :path =>'/', :expire_after => 14400, :secret =>'change_me' - Wilken

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接