私は似たようなことをするアプリを持っています.Open IDとOAuthをログイン専用に使用し、ユーザーのメールアドレスを保存しますが(GoogleアカウントまたはFacebookは認証中にそれを送り返します)、ユーザーはそれを使用してログインすることはないため、/パスワードが必要です。
これは、ユーザーが Facebook 経由でサインアップしたときに発生するコールバックです。
User.create!( :facebook_id => access_token['uid'],
:email => data["email"],
:name => data["name"],
:password => Devise.friendly_token[0,20])
はDevise.friendly_token[...]
、ユーザーのランダムな 20 文字のパスワードを生成するだけで、デフォルトの User モデルをデバイスで問題なく使用しています。ユーザーに同様の方法でパスワードを設定するだけが私のアプローチです。パスワードを使用することは決してないからです。また、気が変わってログインできるようにしたい場合は、データベース内のユーザーのパスワードを変更してログインフォームを作成するだけで、あとは devise が処理してくれます。