1

Omniauth を使用して、ユーザーが Facebook を使用して Rails アプリにログインできるようにしようとしています。ローカルでは、omniauth は次のリンクを使用して、認証のためにブラウザーを Facebook に自動的にリダイレクトします。

<%= link_to "Sign in with Facebook", "/auth/facebook" %>

期待どおりにリダイレクトされ(コールバックエラーなし)、ログアウトできます。

この問題は、アプリケーションをサーバーにアップロードしようとすると発生します。何らかの理由で Omniauth が機能せず、リダイレクトも行いません。代わりに、ブラウザーをアプリ内の存在しないディレクトリ (http://sharedchecklist.com/auth/facebook) にポイントし、このエラーを吐き出します:

Routing Error

No route matches "/auth/facebook"

過去数時間にわたって多くの検索を行って、問題が何であるかを突き止めようとしました. サイトとキャンバスの URL をアプリのアドレスに変更したことを確認しました。コールバックの問題ではありません。

omn​​iauth が存在しないようなものです…</p>

以前にこの問題に遭遇した人はいますか? 私はレールにかなり慣れていませんが、これまでに問題を解決することができたため、これが最も苛立たしいものになりました。

URL が役立つ場合は、http ://sharedchecklist.com/ をご覧ください。

ご協力いただきありがとうございます。

4

3 に答える 3

0

これは、config / initializers/omniauth.rbが欠落している場合に発生するようです。

そのファイルは無視リストにあり、サンプルファイルはomniauth.rb.sampleです。omn​​iauth.rbファイルを作成するのを忘れたのですが、同じエラーが発生していました。

于 2011-03-09T19:08:13.437 に答える
0

リダイレクト先を Facebook に伝える必要があります。開発中に機能する場合は、サイトの URL が「http://localhost:3000」に設定されている可能性があります。「http://sharedchecklist.com」に変更すると機能します。もちろん、それは開発中に壊れます。したがって、テスト用に、常にローカルホストにリダイレクトする新しい「テスト」Facebook アプリケーションを作成しました。

于 2011-02-21T05:49:37.440 に答える
0

ローカル ホストでテストし、運用環境を維持したい場合:

1- 開発目的でのみ新しい Facebook アプリを作成する

2- サイト URL フィールドを次のように設定します。http://localhost:3000/

3- 次に/config/initializers/omniauth.rb、次のようにファイルを編集します。

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  if Rails.env.development?
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
    provider :facebook, 'DEV_APP_ID', 'DEV_APP_SEVRET'
  else
    provider :facebook, 'DEPLOY_APP_ID', 'DEPLOY_APP_SECRET'
  end
end

最後に再起動rails serverすると、新しいアプリからログインできるはずです。

于 2012-10-25T14:58:45.573 に答える