使用openid检索用户详细信息

时间:2010-07-15 21:51:11

标签: ruby-on-rails ruby openid ruby-openid

我正在使用open_id_authentication插件进行登录。我能够正确地集成插件,它运行良好。我想检索其他值,如用户的昵称和电子邮件,我无法检索。我使用以下代码但注册字段为空。我在这里做得对吗?。

def authenticate_with_open_id(identity_url,
              :required => [ :nickname, :email ],
              :optional => :fullname) do |result, identity_url, registration|
            case result.status
            when :missing
              failed_login "Sorry, the OpenID server couldn't be found"
            when :invalid
              failed_login "Sorry, but this does not appear to be a valid OpenID"
            when :canceled
              failed_login "OpenID verification was canceled"
            when :failed
              failed_login "Sorry, the OpenID verification failed"
            when :successful
              if @current_user = User.find_by_openid_identifier(identity_url)
                assign_registration_attributes!(registration)

                if @current_user.save
                  successful_login
                else
                  failed_login "Your OpenID profile registration failed: " +
                  @current_user.errors.full_messages.to_sentence
                end
              else
                @current_user = User.new
                #@current_user.email = registration[:email]
                logger.info(registration)
                if registration.empty?
                  logger.info("reg empty")
                else
                  logger.info("reg not empty")
                end
                #assign_registration_attributes!(registration)
                #failed_login(@current_user)
              end
            end
          end

1 个答案:

答案 0 :(得分:1)

根据该插件的文档,您显示的代码片段在Rails标准中已经很老了。目前尚不清楚这个插件或方法是否仍然适用于其年龄和缺乏明显的当前支持和采用。

虽然没有回答问题,但如果您愿意考虑更好的支持方法,您可以查看Authlogic(Rails身份验证中最重要的事情)。

除了Devise目前在Rails社区中引起了很多关注,但就OpenID来说似乎并不完全相同,尽管它看起来非常棒。 / p>

查看教程here,不要错过无与伦比的 Railscast 系列中的episode。我发现Authlogic 只是工作我尝试过的任何东西。