私は全く同じ問題を抱えていましたので、私の解決策が役立つことを願っています。あなたの質問に詳細をオフに基づいて
私は工夫のwikiでOmniAuthガイド以下のあなたを想定しています: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 = User.where(:email => data.email).first
user
else # Create a user with a stub password.
User.create!(:email => data.email, :password => Devise.friendly_token[0,20])
end
end
私はので、他のブロックのロジックを変更それはすぐにデータベースに新規ユーザーを作成し、それらのパスワードをハッシュした
else # Create new user
user =User.new
user
end
をする代わりに、私はちょうどトンように、新しいユーザーを作りました帽子Facebookの情報を取得した後私は彼らが編集してパスワードを作成することができますフォームフィールドに自分の情報が入力されているサインアップページにそれらを指示します。すべてのそれらのフィールドが移入されているので、
あなたは自分が
def self.new_with_session(params, session)
新しいユーザーのためにつかんで、関連するすべてのFacebookの情報を追加して更新し、新しいユーザーオブジェクトに割り当てることを確認する必要があります彼らサインアップページの情報パスワードを入力して情報を追加または変更して送信をクリックすると、新しいユーザーが作成されます。うまくいけば、これは役に立ちます。
これが考案上のwikiページのためのアイデアやrailscast omniauthチュートリアルのマッシュました:http://railscasts.com/episodes/235-omniauth-part-1
私はそれが良い解決策であると仮定します。 Facebookに接続するとすぐにユーザーを作成できるようにすることは非常に役に立ちます。私は "hascreatedownpassword"のようなブール値のフィールドを持つことができたと思います。アイデアをありがとう。 –