![](/img/trans.png)
[英]Rails - Get Additional Fields During Facebook Omniauth Registration
[英]The form with required fields in omniauth registration. (Ruby on Rails)
我有带有gem dev + gem omniauthn(多个提供程序)的Rails应用程序。 我遵循了本教程: http : //blog.yangtheman.com/2012/02/09/facebook-connect-with-rails-omniauth-devise/ (应用程序示例: https : //github.com/klebershimabuku/fb_auth_demo )
用户模型:
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
attr_accessible :name, :email, :country, :password, :password_confirmation, :remember_me
has_many :authentications, :dependent => :delete_all
def apply_omniauth(auth)
self.email = auth['extra']['raw_info']['email']
authentications.build(:provider => auth['provider'], :uid => auth['uid'], :token => auth['credentials']['token'])
end
认证模型:
attr_accessible :provider, :token, :uid, :user_id
belongs_to :user
身份验证控制器:
def create
auth = request.env["omniauth.auth"]
# Try to find authentication first
authentication = Authentication.find_by_provider_and_uid(auth['provider'], auth['uid'])
if authentication
# Authentication found, sign the user in.
flash[:notice] = "Signed in successfully."
sign_in_and_redirect(:user, authentication.user)
else
# Authentication not found, thus a new user.
user = User.new
user.apply_omniauth(auth)
if user.save(:validate => false)
flash[:notice] = "Account created and signed in successfully."
sign_in_and_redirect(:user, user)
else
flash[:error] = "Error while creating a user account. Please try again."
redirect_to root_url
end
end
end
当我用设计表格注册时,我可以填写一些必填字段,例如名称和国家。 但是,当我使用omniauth注册时,我无法填写这些字段,因为它根本没有形式,因此注册后它们为NULL。 所以我的问题是:如何向omniauth注册添加带有必需的额外字段的表单?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.