4

Ryan Batesのスクリーンキャストに従って、アプリケーションにomniauthを使用したFacebook認証を追加しています

認証コントローラーの作成機能に問題があります。create関数はFacebookコールバックを処理する必要があります(これは問題ないようです)。

ログファイルのエラーは次のとおりです。

NoMethodError(nil:NilClassの未定義のメソッド `authentications')

エラーは、認証コントローラーの作成関数の次の行を参照しています。

current_user.authentications.find_or_create_by_provider_and_uid(auth ['provider']、auth ['uid'])

何が問題だと思いますか?

ありがとう、

オデッド

4

3 に答える 3

4

問題は、認証しようとしたときにログインしていないため、current_user が nil であることです。ログインしてから認証すると、認証インデックス ページにリダイレクトされます。それが彼がRailscastで行った方法です。次のエピソードで、彼はログインしていないユーザーに対処します。

于 2011-03-28T12:53:43.840 に答える
1

あなたcurrent_userは nil なので、nil オブジェクトの認証にアクセスしようとすると、表示されているエラー メッセージが表示されます。

メソッドを修正する必要がありますcurrent_user

于 2011-03-09T14:53:47.667 に答える
0

私も同じ問題を抱えていましたが、解決しました。このエラーがスローされる理由は、AuthenticationController の作成アクションが、現在ログインしているユーザーがいると想定し、そのユーザーの新しい認証を検索または作成しようとするためです。最初にユーザー名とパスワードを使用してログインせずに認証しようとしているため、 current_user 変数は nil になります。

リンクに従って問題を解決してくださいhttp://railscasts.com/episodes/236-omniauth-part-2?view=asciicast

于 2012-02-06T15:01:15.857 に答える