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

时间:2011-08-21 07:08:57

标签: ruby heroku openid omniauth

我在Heroku上有一个应用程序,它使用omniauth并在我访问myapplication.heroku.com/auth/open_id时正确验证,输入我的谷歌端点,然后重定向回来。

但是,当我访问myapplication.com时,设置了heroku自定义域并为其他每个网址工作,我从Google重定向后从heroku获得Application Error(我还没有尝试其他openid提供商)

我有hoptoad设置,并没有向我发送有关特定错误的任何通知(可能是因为omniauth是中间件)。 heroku logs除了在网址上发出[nginx] GET请求之外没有任何内容显示错误。

它可能没关系,但这是一个rails应用程序。

localhost生产测试工作正常。

想法?

2 个答案:

答案 0 :(得分:2)

我不确定这是否可以解决您的问题,但我在我的应用上遇到了类似的问题(OAuth与Facebook,Rails,Heroku)。事实证明问题是由以下行引起的:

session["devise.facebook_data"] = env["omniauth.auth"]

(如果用户尚未拥有帐户,则会在会话中存储OAuth数据,并且必须先填写注册表单才能保留)。

这导致ActionDispatch::Cookies::CookieOverflow(对于omniauth.auth哈希太大而无法存储在会话cookie中的某些用户{{1}}。因此,在将其保存到会话之前,我通过预处理哈希并丢弃不需要的所有内容来修复此问题。也许你的错误与此有关?

答案 1 :(得分:0)

我遇到了同样的问题。

myurl.com导致502坏网关,而.herokuapp.com工作正常。

我已经设置了

use Rack::Session::Cookie

要启用会话cookie,但由于某种原因,Heroku的Ngnix代理不喜欢这样。当我把它改为:

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

即。确保哈希中没有域密钥。