我在Heroku上有一个应用程序,它使用omniauth并在我访问myapplication.heroku.com/auth/open_id
时正确验证,输入我的谷歌端点,然后重定向回来。
但是,当我访问myapplication.com
时,设置了heroku自定义域并为其他每个网址工作,我从Google重定向后从heroku获得Application Error
(我还没有尝试其他openid提供商)
我有hoptoad设置,并没有向我发送有关特定错误的任何通知(可能是因为omniauth是中间件)。 heroku logs
除了在网址上发出[nginx] GET
请求之外没有任何内容显示错误。
它可能没关系,但这是一个rails应用程序。
localhost生产测试工作正常。
想法?
答案 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'
即。确保哈希中没有域密钥。