OmniAuth на Heroku с пользовательским доменом приводит к ошибке приложения - PullRequest
3 голосов
/ 21 августа 2011

У меня есть приложение на Heroku, которое использует omniauth и правильно аутентифицируется при посещении myapplication.heroku.com/auth/open_id, вводе моей конечной точки Google и перенаправлении обратно.

Однако при посещении myapplication.com с настройкой herokuНастройка доменов и работа для каждого другого URL, я получаю Application Error от heroku после перенаправления обратно из Google (я не пробовал других провайдеров openid).

У меня есть настройка hoptoad, и она не отправляет мне никаких уведомленийо конкретной ошибке (вероятно, потому что omniauth является промежуточным ПО).В heroku logs ничего не отображается, кроме того, что в URL-адресе был [nginx] GET запрос, выдавший ошибку.

это, вероятно, не имеет значения, но это приложение rails.

Производственное тестирование на локальном хосте работает нормально.

идеи?

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Я не уверен, решит ли это вашу проблему, но я столкнулся с подобной проблемой в моем приложении (OAuth с Facebook, Rails, Heroku).Оказалось, что проблема была вызвана следующей строкой:

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

(которая хранит данные OAuth в сеансе в случае, если у пользователя еще нет учетной записи и ему необходимо заполнить форму регистрации, прежде чем он сможетбыть сохраненным).

Это вызвало ActionDispatch::Cookies::CookieOverflow (о котором также не сообщалось Hoptoad / Airbrake ) для некоторых пользователей, чей хеш omniauth.auth был слишком велик для сохранения в сеансепеченье.Поэтому я исправил эту проблему, предварительно обработав хеш и выбросив все, что не нужно, перед сохранением в сеанс.Может быть, ваша ошибка связана с этим?

0 голосов
/ 14 декабря 2011

У меня была такая же проблема.

myurl.com привел к 502 плохим шлюзам, в то время как .herokuapp.com работал нормально.

Я установил

use Rack::Session::Cookie

Чтобы включить сеансовые куки, но по какой-то причине прокси Ngnix в Heroku это не понравилось. Когда я изменил это на:

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

т. убедился, что в хэше нет ключа домена.

...