16

https://github.com/plataformatec/devise/wiki/OmniAuthに沿ってフォローしようとしています: -概要と私は困惑しています。

config.omniauth :facebook, ENV['FB_APP_ID'], ENV['FB_APP_SECRET']config / initializers / devise.rb、routes.rbdevise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }にあり、OmniAuthCallbacksコントローラーが定義されています。

私が訪問するuser_omniauth_authorize_path(:facebook)と、 Not found. Authentication passthru.次のようになります。次に何をすべきかわからない。ルートグロビンを使用していないので、パススルーメソッドを定義する必要はないと思いますが、定義すると404になります。

4

11 に答える 11

10

また、OmniauthCallbacksController へのルートを追加したことを確認してください。

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

User モデルのデバイス宣言に更新を追加したことを確認します。

devise :omniauthable, :omniauth_providers => [:facebook]
于 2014-03-07T09:41:27.220 に答える
8

同じエラーが発生しました。
私にとってうまくいったのconfig.omniauth :facebook, ENV['FB_APP_ID'], ENV['FB_APP_SECRET']は、config/initializers/devise.rb に加えた変更 () を反映するために、Rails サーバーを再起動することでした。

于 2014-03-28T12:19:35.653 に答える
8

したがって、古いプロジェクトを開いた後、これにつまずきました。認証URLが「user/auth/facebook.facebook」のように見えることを確認した後、レーキルートを実行し、変更して解決しました

<%= link_to "Sign in with Facebook", user_omniauth_authorize_path(:facebook) %>

<%= link_to "Sign in with Facebook", user_facebook_omniauth_authorize_path %>

rake routesコマンドが返されてから、omniauth ルートのヘルパーが変更されたようです。

user_facebook_omniauth_authorize   GET|POST   /users/auth/facebook(.:format)          omniauth_callbacks#passthru

プロジェクトを開始した数か月前とは異なります。

user_omniauth_authorize            GET|POST   /users/auth/facebook(:provider)          omniauth_callbacks#passthru

この投稿が誰かの役に立てば幸いです。

于 2016-07-18T02:56:05.517 に答える
5

これをもっと早くリストする必要がありましたが、「バックアウトして再試行する」アプローチをとることになりました。OmniAuth に関連するものをすべて削除し、指示に従って最初からやり直しました。具体的には、何が間違っていたのかを知りたいのですが、残念ながら、再試行すると「うまくいきました」。

tl;dr https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview verbatim の手順に従ってください。動作するはずです

于 2013-03-21T13:38:47.087 に答える
4

これを修正する方法を知りたい人は、単にメソッドを宣言するかpassthru、私がしたことを実行してください。 1つの方法。action_missingmethod_missing

例えば、

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController

  def action_missing(provider)
    # Set up authentication/authorizations here, and distribute tasks
    # that are provider specific to other methods, leaving only tasks
    # that work across all providers in this method. 
  end

ここで立ち往生している他の人の助けになることを願っています。

于 2013-05-16T14:50:54.700 に答える
3

今日は一日中問題を追跡しようとしましたが、以前は機能していたので、git の履歴をさかのぼってようやく見つけました。

どういうわけかロケールを切り替えるルーティング フィルターが悪の根源であることが判明しました。filter :localeルートでメソッドを無効にしたところ、承認リクエストが facebook に送信されました。なんてこった、ついにそれを知ってとてもうれしいです:)

于 2015-09-05T16:03:23.500 に答える
0

デバイス初期化子 ( config/initializers/devise.rb ) ファイルで omniauth_path_prefix を設定してみてください。

ユーザー クラスの場合:

config.omniauth_path_prefix = "/users/auth"

他のクラスの場合 (たとえば、User ではなく Account を使用する場合):

config.omniauth_path_prefix = "/accounts/auth"

翻訳されたルートでも同じです(私の場合)。「ユーザー」を「blabla」に翻訳しました。機能させるには、プレフィックスを「/blabla/auth」に設定する必要がありました。(1 つのロケールのみで機能します!)

于 2014-04-30T08:46:25.947 に答える