8

https://github.com/plataformatec/devise/wiki/OmniAuthをフォローしようとしました:-概要、しかしどういうわけか、生成されたルートを見ると、コールバックパスのみが表示され、認証パスは表示されません(実際にuser_omniauth_authorize_pathリンクのあるビューでエラーが発生しました)。

OmniAuthとDeviseのバージョンの問題である可能性があると思います(0.2.0.beta以降、Omniathでは構成可能な設定が可能であり、ルートを定義する必要があるため)。ただし、古いバージョンのOmniAuthを使用しようとすると、エラー「You are using an old OmniAuth version, please ensure 0.2.0.beta or later installed.」が発生します。

Deviseのマスターである1.2.rcとomniauthブランチ、およびomniauth gem全体(0.2.0.beta以降)と「oa-oauth」の両方を使用してみましたが、成功しませんでした。また、ルートを定義しようとしました。

match '/users/auth/:action/', :to => 'users/omniauth_callbacks#action', :as => 'user_omniauth_authorize'

これはルートに役立ちましたが、リンクを押すと、デバイスがマッピングを見つけることができないというエラーが発生しました。面白いことに、devise_forのコントローラーを無効に変更すると(users /omniauth_callbacksの前に'/'を追加するなど)、最初はエラーが発生しました( "コントローラー名はスラッシュで始めないでください")が、実際には小さなリロードが送信されました私はFacebookに戻って行きます(しかし、当然、コールバックルートは定義されていませんでした)。

私はRubyを初めて使用しますが、ここからどこに行くのかよくわかりません。どんな助けでもありがたいです。

4

2 に答える 2

6

このメソッドは、ルートではなく、デバイスによって定義されます。したがって、を実行しても表示されませんrake routes。このメソッドは、config / initializers/devies.rbで構成したoauthプロバイダーの1つを使用します。たとえば、devise.rbで以下を定義する場合:

config.omniauth :facebook, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET

次に、次のような承認リンクを作成する必要があります。

<%= link_to "Facebook Sign in", user_omniauth_authorize_path(:facebook) %>
于 2011-03-02T21:34:10.607 に答える
0

私の問題は、omniauthとdeviseのバージョンが異なることが原因でした。最終的に機能したのは、gemfileでこの構成を使用することでした。

gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
gem 'omniauth', '>=0.2.0.beta'
gem 'oa-oauth', :require => 'omniauth/oauth'

私の実装の詳細については、こちらをご覧ください。

于 2011-10-14T19:09:13.253 に答える