Я пытаюсь интегрировать простую аутентификацию OpenID через учетные записи Google. Я использую omniauth gem и в моей локальной системе разработки (Win7, ruby 1.8.7-p302, rails 2.3.8, omniauth 0.1.5) все работает хорошо.
Проблема показывает его лицо при развертывании на хостинге (HostGator). Приложение (mongrel) запускается через порт 12002, и через cPanel HostGator оно настроено для перезаписи с одного из поддоменов:
RewriteCond %{HTTP_HOST} ^subdomain.mycompany.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.subdomain.mycompany.com$
RewriteRule ^(.*)$ "http\:\/\/127\.0\.0\.1\:12002\/$1" [P,L]
Когда браузер переходит / auth / open_id, он перенаправляется в Google для авторизации, но его обратный_адрес - subdomain.mycompany.com:12002, что, конечно, неверно, потому что Apache не слушает 12002. Мне удалось обезьяна исправить OmniAuth :: Стратегии :: OpenID и Rack :: OpenID, поэтому они собирают адрес без порта, НО теперь на финальной стадии после подтверждения доступа пользователя, если попадает в:
Routing Error
No route matches "/403.shtml" with {:method=>:get}
Полагаю, проблема в том, что адрес моего сайта закодирован (какой-то хэш) в другом параметре запроса авторизации, чтобы избежать