オムスアス&Facebook: "が見つかりません。認証パススルー。」 -- ruby-on-rails フィールド と devise フィールド と omniauth フィールド 関連 問題

Devise, OmniAuth & Facebook: “Not found. Authentication passthru.”












13
vote

問題

日本語
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 、およびOmniauthCallbacksコントローラが定義されています。

user_omniauth_authorize_path(:facebook) にアクセスしたら、次のようになります。 <コード> Not found. Authentication passthru. 次に何をすべきかわからない。私はルートグローブを使用していませんので、Passthruメソッドを定義する必要があると信じていませんが、ただ404を与えてください。

英語

Trying to follow along with https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview and I'm stumped.

I've got config.omniauth :facebook, ENV['FB_APP_ID'], ENV['FB_APP_SECRET'] in my config/initializers/devise.rb, devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } in my routes.rb, and an OmniAuthCallbacks controller defined.

When I visit user_omniauth_authorize_path(:facebook), I get: Not found. Authentication passthru. I'm not sure what to do next. I am not using route globing, so I don't believe I need to define a passthru method, but doing so just gives me a 404.

</div
        
         
         

回答リスト

10
 
vote

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

<事前> <コード> devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

あなたのユーザーモデルのDepisis宣言に更新を追加したこと:

<事前> <コード> devise :omniauthable, :omniauth_providers => [:facebook]
 

Also make sure you have added a route to the OmniauthCallbacksController:

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

and that you have added the update to the devise declaration in your User model:

devise :omniauthable, :omniauth_providers => [:facebook] 
</div
 
 
7
 
vote

私は同じエラーを持っていました。
Config / Initializers / Devise.rbに行った変更(<コード> config.omniauth :facebook, ENV['FB_APP_ID'], ENV['FB_APP_SECRET'] )を反映するようにRails Serverを再起動していました。

 

I had the same error.
What worked for me was restarting the rails server, to reflect the changes (config.omniauth :facebook, ENV['FB_APP_ID'], ENV['FB_APP_SECRET']) I had made to config/initializers/devise.rb.

</div
 
 
7
 
vote

だから私は古いプロジェクトを開いた後、そして私の承認のURLが「user / auth / facebook.facebook」のような何かを見て、私はRAKE ROUTESを実行し、

を変更してそれを解決したことを見ました。 <事前> <コード> <%= link_to "Sign in with Facebook", user_omniauth_authorize_path(:facebook) %>

<事前> <コード> <%= link_to "Sign in with Facebook", user_facebook_omniauth_authorize_path %>

どうやら rake routes コマンドが返されてからオムアスルートのヘルパーが変更されました:

<事前> <コード> user_facebook_omniauth_authorize GET|POST /users/auth/facebook(.:format) omniauth_callbacks#passthru

は、プロジェクトを始めたときに数ヶ月前のものではありません。

<事前> <コード> <div style="width:80%;overflow-y: visible"> <ul style="width:100%"> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> </ul> </div> 0

この記事が誰かに役立つことを願っています。

 

So I've stumbeled upon this after opening a old project and and after seeing that my authorize url looke something like "user/auth/facebook.facebook" i ran a rake routes and solved it by changing

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

to

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

Apparently the helpers for the omniauth routes have changed since the rake routes command returned:

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

and not as it was some months ago when I started the project.

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

Hope this post helps someone.

</div
 
 
   
   
5
 
vote

私は早くリストされるべきですが、私は「バックアウトして再試行」アプローチをすることを終えました。私はOmniauthに関連していたすべてを削除し、指示に従って始めました。私は具体的には何を知っていたのか、私は間違っていましたが、残念ながらそれは私が再試行したら「ちょうど働いた」それは「ちょうど働いた」。

tl; dr <a href="https://github.com/plataformatec/devise/wiki/omniauth:- https://github.com/plataformatec/ Depise / Wiki / Omniauth:-Overview </a>逐語的に働くべきである

 

I should have listed this sooner, but I ended up doing a "back out and retry" approach; I deleted everything I had related to OmniAuth and started over following the instructions. I wish I knew what, specifically, I had wrong but unfortunately it "just worked" once I retried.

tl;dr Follow the steps in https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview verbatim and it should work

</div
 
 
4
 
vote

これを修正する方法を知りたい人は、 <div style="width:80%;overflow-y: visible"> <ul style="width:100%"> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> </ul> </div> 1 メソッドを宣言したり、実行したことを宣言したり、 <div style="width:80%;overflow-y: visible"> <ul style="width:100%"> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> </ul> </div> 2 ではありません( 9988766613)。 では、Rails 4!)では、Omniauthが1つのメソッドで使用するすべてのユーザー/ auth /:プロバイダURLをキャッチすることができます。

例えば

<事前> <コード> <div style="width:80%;overflow-y: visible"> <ul style="width:100%"> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> </ul> </div> 4

私はここで動けなくなった他の誰かが助けるのを助けたいと思います、私は確かにしました。

 

For anyone who wants to know how to fix this, simply declare a passthru method, or do what I did, which is use action_missing (not method_missing, it is deprecated in Rails 4!) to catch all users/auth/:provider urls that omniauth uses in one method.

For instance,

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 

I hope that helps anyone else who gets stuck here, I sure did.

</div
 
 
2
 
vote

私は今日の日を追跡しようとしている一日を過ごしました、そして、私はついにそれが早く仕事をしているのでgit歴史に戻っている間にそれを見つけました。

ロケールを切り替えるルーティングフィルタは、どういうわけか悪の根源であることがわかりました。私のルートで <div style="width:80%;overflow-y: visible"> <ul style="width:100%"> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> <li><img src="..." /></li> </ul> </div> 5 メソッドを無効にし、許可要求はFacebookに通過しました。血まみれの地獄、私はついに私がついに見つけたことをとてもうれしいです:)

 

I spent the entire day today trying to track down the issue and I finally found it while going back in git history since it used to work earlier.

It turned out that the routing-filter to switch locales somehow was the root of the evil. I just disabled the filter :locale method in my routes and the authorization request went through to facebook. Bloody hell, I'm so glad I finally found out about that :)

</div
 
 
0
 
vote

Depise Initializer( config / initializers / devise.rb )ファイルのomniauth_path_prefixの設定を試してください。

ユーザークラスの場合:

<事前> <コード> config.omniauth_path_prefix = "/users/auth"

他のクラス(例えば、アカウントではなく使用する場合):

<事前> <コード> config.omniauth_path_prefix = "/accounts/auth"

翻訳路を持つのと同じこと(My case)。私は「Blabla」に「ユーザー」をトランケートしました。それを働かせるために私は「/ blabla / auth」にプレフィックスを設定しなければなりませんでした。 (1つのロケールだけで動作します)

 

Try setting omniauth_path_prefix in devise initializer (config/initializers/devise.rb) file.

For User class:

config.omniauth_path_prefix = "/users/auth" 

For other class (e.g. when you use Account not User):

config.omniauth_path_prefix = "/accounts/auth" 

Same thing with translated routes (my case). I've tranlated 'users' into 'blabla'. To have it working I had to set prefix to "/blabla/auth". (Works for only one locale!)

</div
 
 
0
 
vote

config/initializers/devise.rb で、DeviseとOmniauthを使用した構成をのみにする必要があるため、起こりうる可能性があります。 onfig/initializers/omniauth.rb ファイルを作成しないでください。

config.omniauthはOmniauth Providerミドルウェアを追加することを忘れないでください。 あなたの申請。これはあなたがこのプロバイダを追加しないでください Config / Initializers / Omniauth.rbで再びMiddleWareが衝突する 互いに常に故障している認証になります。

https://github.com/heartCombo. / Depise / Wiki / Omniauth%3a-overview#前後の#

 

It could be happening because the configuration with Devise and Omniauth should be made ONLY in config/initializers/devise.rb. Do not create the onfig/initializers/omniauth.rb file.

Remember that config.omniauth adds omniauth provider middleware to your application. This means you should not add this provider middleware again in config/initializers/omniauth.rb as they'll clash with each other and result in always-failing authentication.

https://github.com/heartcombo/devise/wiki/OmniAuth%3A-Overview#before-you-start

</div
 
 
-1
 
vote

user.rbとdevise.rbの両方に、必ず同じ綴りを書いてください。 -

user.rb

<事前> <コード> devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable, omniauth_providers: [:google_oauth2, :facebook], authentication_keys: [:login], reset_password_keys: [:login], confirmation_keys: [:login]

devise.rb

<事前> <コード> config.omniauth :google_oauth2, ENV["GOOGLE_OAUTH_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"], { scope: 'userinfo.email, userinfo.profile', prompt: 'select_account', image_aspect_ratio: 'square', image_size: 50 } config.omniauth :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'], scope: 'email', info_fields: 'email, first_name, last_name', callback_url: "#{ENV["HOST_URL"]}/users/auth/facebook/callback"
 

Make sure to write the same spelling of providers on both user.rb and devise.rb like -

user.rb

devise :database_authenticatable, :registerable,      :recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable, omniauth_providers: [:google_oauth2, :facebook], authentication_keys: [:login], reset_password_keys: [:login], confirmation_keys: [:login] 

devise.rb

config.omniauth :google_oauth2, ENV["GOOGLE_OAUTH_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"],    {     scope: 'userinfo.email, userinfo.profile',     prompt: 'select_account',     image_aspect_ratio: 'square',     image_size: 50   }  config.omniauth :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'], scope: 'email', info_fields: 'email, first_name, last_name', callback_url: "#{ENV["HOST_URL"]}/users/auth/facebook/callback" 
</div
 
 

関連する質問

0  Omniauth + Facebookエラーが見つかりませんでした。認証PASSTHRU  ( Devise omniauth facebook error not found authentication passthru ) 
im大きな問題説明書の指示に従います: https://github.com/plataformatec/devise/wiki/omniauth:-概要 私のアプリでProdisis Facebook Omniauthを実装するために、私はこれをに入...

4  Twitter / Facebook認証でレール4エラーが発生しました。演じる  ( Rails 4 error with twitter facebook authentication devise ) 
私は考案しています、そして私はTwitter / Facebookを使ってユーザーが登録できるようにしています。私は gettingを続けているのでとても混乱しています ルートが一致しません{:controller =&gt; "認証"、:アクション=&gt;...

4  RSPECでのTwitterの統合テストを考案し、Omniauth Twitterの統合テスト  ( Devise and omniauth twitter integration testing with rspec ) 
omniauthを使ってTwitterでサインインするための統合テストを書いています。リクエスト変数を設定するのに問題があります。それはコントローラテストで動作しますが、Spec Helperを正しく設定していないと考えるように私につながる統合テストは機能し...

1  HerokuのSinatraとOmniauthとGoogle  ( Omniauth and google with sinatra on heroku ) 
ログインプロバイダとしてGoogleを使ってSinatraアプリでOmniauthを使用しようとしています。 TwitterやFacebookのプロバイダを使ってうまく機能します。 <事前> <コード> require 'omniauth' require '...

0  Ruby 1.8.7を実行しているときにSINATRAがOmniauthを読み込むのを防ぐのをやっていること  ( What am i doing that prevents sinatra from loading omniauth when running ruby 1 ) 
omniauthは1.8.7互換性があり、ラックベースです。私はRuby 1.8.7 / REE不幸で実行されたときにSinatraを作ることがどういうわけか、Omniauthのた​​めのカスタム戦略を作成しました。 1.8.7または1.9.2でRails ...

2  Omniauth + Facebookの相互の友達数カウント  ( Omniauth facebook mutual friends count ) 
友人のテーブルを作成したり、各ユーザーの友達のUIDを記録するよりもユーザー間で相互の友人を見つけるより良い/簡単な方法はありますか? (RailsのDepise + Omniauth 3の使用3) ...

0  Omniauth認証後に空白のページを入手するのはなぜですか。  ( Why do i get a blank page after omniauth authentication ) 
私のRailsアプリケーションにFacebookとTwitterのログインを使用しています。ローカルホスト:3000またはHerokuでログインするとうまく機能しますが、アプリケーションがVPSで実行されると、URIリダイレクト後に空白のページが表示されます。...

0  Omniauth OpenID認証はuser_infoでnilを返します  ( Omniauth openid authentication returns nil on user info ) 
Ruby 1.9.2 + Rails 3 + Devise + Omniauthを使用して、OpenIDを使用してユーザーを認証しようとしています。 omniauth.rbの私のプロバイダはです <事前> <コード> provider :open_id, ...

2  omn​​iauth jQuery Ajax呼び出しで動作していません  ( Omniauth not working with jquery ajax call ) 
FacebookがjQuery Ajax呼び出しを介してConnectを呼び出しようとしています。コールはリンクを使用しているだけであれば、Ajax呼び出しで失敗します。私はjQueryの初心者であり、私が得るのは警戒の言葉であると言っているように、それをデ...

1  レールの入れ子ハッシュからの結果を示す  ( Showing results from nested hash in rails ) 
LinkedIn APIを私のRailsアプリに正常に実装しました。 APIは、最後の2つの位置の詳細からより多くのフィールドを含む位置フィールドからのデータを返します。それはタイトル、期間、説明などを含みます... 私のRailsアプリで2番目のジョブ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有