2012-02-02 13 views
12

私は誰かがこの問題の良い解決策を持っていることを期待しています。私たちはユーザに(アプリケーションを好むことによって)Facebookに登録させると同時に、彼らは私たちのサイトのユーザとしてデータベースに入ります。Devise、OmniAuth&Facebook - ユーザーにパスワードの編集を許可する方法

登録に成功すると、Devise/OmniAuthはランダムなパスワード(?)を作成しているようです。どのように私はユーザーが自分のプロファイルを編集できるようにすることができますか?Deviseのデフォルトでは、現在のパスワードを入力する必要がありますか?

答えて

8

私は全く同じ問題を抱えていましたので、私の解決策が役立つことを願っています。あなたの質問に詳細をオフに基づいて

私は工夫の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

+0

私はそれが良い解決策であると仮定します。 Facebookに接続するとすぐにユーザーを作成できるようにすることは非常に役に立ちます。私は "hascreatedownpassword"のようなブール値のフィールドを持つことができたと思います。アイデアをありがとう。 –

関連する問題