deviseとOmniAuthを使用してfacebookログインを実装しました。
新規登録時にusernameを入力させたいです。
入力フォームを追加したらパスワードの入力欄まで表示されてしまいます。
パスワードを入力すれば新規登録はできますが
facebook認証した場合にパスワードを入力しなくても新規登録ををできるようにするにはどうしたら良いでしょうか
lang
1 2#omniauth_callbacks_controller.rb 3def facebook 4 # You need to implement the method below in your model (e.g. app/models/user.rb) 5 @user = User.from_omniauth(request.env["omniauth.auth"]) 6 7 if @user.persisted? 8 sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated 9 set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? 10 else 11 session["devise.facebook_data"] = request.env["omniauth.auth"] 12 redirect_to new_user_registration_url 13 end 14end 15 16 17#user.rb 18def self.from_omniauth(auth) 19 where(auth.slice(:provider, :uid)).first_or_create do |user| 20 user.email = auth.info.email 21 user.password = Devise.friendly_token[0,20] 22 end 23end 24 25 26#user.rb 27def self.new_with_session(params, session) 28 super.tap do |user| 29 if data = session["devise.facebook_data"] && session["devise.facebook_data"]["extra"]["raw_info"] 30 user.email = data["email"] if user.email.blank? 31 end 32 end 33end
あなたの回答
tips
プレビュー