Google アカウントを介して単純な OpenID 認証を統合しようとしています。私は omniauth gem を使用しており、ローカル開発システム (Win7、ruby 1.8.7-p302、rails 2.3.8、omniauth 0.1.5) ではすべて正常に動作します。
この問題は、ホスティング (HostGator) にデプロイしたときの顔を示しています。アプリ (mongrel) はポート 12002 で開始し、HostGator の cPanel を介して、サブドメインの 1 つから書き換えられるように構成されています。
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 にリダイレクトされますが、return_to アドレスは subdomain.mycompany.com:12002 であり、Apache は 12002 をリッスンしないため、もちろん正しくありません。 ::OpenID と Rack::OpenID は、ポートなしでアドレスを組み立てますが、ユーザー アクセスの確認後、次の場合は最終段階になります。
Routing Error
No route matches "/403.shtml" with {:method=>:get}
問題は、私のサイトのアドレスが他の認証リクエストパラメーターでエンコードされていること(ある種のハッシュ)が回避することだと思います