2

https://github.com/plataformatec/devise/wiki/OmniAuth:-Overviewで説明されている手順に従い、ユーザー モデルに次のようなメソッドを用意しました。

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
  data = access_token.extra.raw_info
  if user = self.find_by_email(data.email)
    user
  else # Create a user with a stub password. 
    self.create!(:email => data.email, :password => Devise.friendly_token[0,20]) 
  end
end

次のようなエラーが断続的に発生します

omn​​iauth_callbacks#facebook で NoMethodError が発生しました:

未定義のメソッドemail' for "false":String app/models/user.rb:138:infind_for_facebook_oauth'

再現できなかったこと。この問題の原因は何ですか?

4

1 に答える 1

1

何が原因なのかもわかりません。新しいオブジェクトを作成するだけの回避策は次のとおりです。

def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
  data = access_token.extra.raw_info
  if data == "false"
    self.new
  elsif user = self.find_by_email(data.email)
    user
  else # Create a user with a stub password. 
    self.create!(:email => data.email, :password => Devise.friendly_token[0,20]) 
  end
end

例に示されているコントローラーコードが機能し、ユーザーをリダイレクトしてサインアップします。

于 2012-04-26T20:00:41.193 に答える