我在一个轨道站点实现authlogic,而我试图让OpenID的正常工作。 到目前为止,你可以,只要你有一个现有的帐户登录就好了,但如果你没有那么多。 我想能够自动地创建一个新帐户,如果identity_url是不是已经在数据库中。
问题是,我也需要存储一些额外的信息。 如果用户登录,第一次用自己的OpenID,我想请他们填写基本信息(姓名,电子邮件),之前创建的帐户。
我打得周围的一些方法,但似乎没有奏效。
预先感谢任何输入!
我在一个轨道站点实现authlogic,而我试图让OpenID的正常工作。 到目前为止,你可以,只要你有一个现有的帐户登录就好了,但如果你没有那么多。 我想能够自动地创建一个新帐户,如果identity_url是不是已经在数据库中。
问题是,我也需要存储一些额外的信息。 如果用户登录,第一次用自己的OpenID,我想请他们填写基本信息(姓名,电子邮件),之前创建的帐户。
我打得周围的一些方法,但似乎没有奏效。
预先感谢任何输入!
acts_as_authentic do |c|
c.openid_required_fields = [:email,"http://axschema.org/contact/email"]
end
将让你需要的电子邮件。 我不确定如何要求其他领域,但也许检查axschema.org页面。 有没有需要用户填写任何东西比他们的OpenID提供商的URL进行其他。
结合登录和注册可以用像这样做(未经测试的创建UserSessions控制器的方法,就像从authlogic教程的东西)
def create
if User.find_by_openid_provider(params[:user_session]).nil? # or something like that
@user = User.new(params[:user_session])
if @user.save
redirect_to whatever_path
else
# handle error
end
else
@user_session = UserSession.new(params[:user_session])
if @user_session.save
add_message 'Login successful!'
redirect_to whatever_path
else
render :action => :new
end
end
end
也许尝试把更多的信息变成某种形式的临时表,并跟踪用户会话的。一旦他们验证,与OpenID信息来创建真正的用户连接以前输入的信息。