Tôi có cùng một vấn đề chính xác nên tôi hy vọng giải pháp của tôi sẽ hữu ích.
Dựa tắt các chi tiết trong câu hỏi của bạn tôi giả sử bạn sau đây hướng dẫn OmniAuth trong wiki devise: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
Trong phương pháp sau đây:
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
Tôi đã thay đổi logic trong các khối khác vì nó đã tạo ra một người dùng mới trong cơ sở dữ liệu ngay lập tức và băm một mật khẩu cho họ:
else # Create new user
user =User.new
user
end
Thay vào đó tôi chỉ cần thực hiện một người dùng mới nên t mũ sau khi nhận được thông tin facebook tôi trực tiếp họ đến trang đăng ký, nơi tôi có thông tin của họ dân cư trong các lĩnh vực hình thức mà họ có thể chỉnh sửa và tạo một mật khẩu.
Bạn chỉ cần sẽ cần phải đảm bảo cập nhật của bạn
def self.new_with_session(params, session)
thêm tất cả các thông tin facebook có liên quan mà bạn đã lấy cho một người dùng mới và gán nó vào đối tượng người dùng mới vì vậy tất cả những lĩnh vực được dân cư với họ thông tin trong trang đăng ký. Vì vậy, sau khi họ nhập xong mật khẩu của họ và thêm hoặc thay đổi bất kỳ thông tin nào và hãy nhấp vào gửi nó tạo người dùng mới. Hy vọng rằng bạn thấy điều này hữu ích.
Đây là một mash của các ý tưởng cho trang wiki về lập mưu và hướng dẫn omniauth railscast: http://railscasts.com/episodes/235-omniauth-part-1
Tôi cho rằng đó là một giải pháp tốt. Nó sẽ rất hữu ích cho tôi để cho phép người dùng được tạo ra ngay lập tức khi họ kết nối thông qua facebook mặc dù. Tôi đoán tôi có thể có một lĩnh vực boolean như "hascreatedownpassword" mặc dù. Cảm ơn ý tưởng. –