1

ログインの目的で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
4

1 に答える 1

1

そのプラグインのドキュメントからあなたが示したコードフラグメントは、Rails 標準ではかなり古いものです。このプラグインまたはアプローチが古く、現在の明らかなサポートと採用がないことを考えると、まだ機能するかどうかは明らかではありません.

質問に完全に答えているわけではありませんが、サポートされているより良いアプローチを検討したい場合は、Authlogic (Rails 認証の最後の最大のもの) を検討してください。

余談ですが、現在 Rails コミュニティで注目を集めているDeviseは、フレームワークとしては優れていますが、OpenID に関してはそれほど普及していないようです。

ここのチュートリアルを見て、比類のないRailscastシリーズのこのエピソードをお見逃しなく。Authlogic は、私が試したものすべてで動作することがわかりました。

于 2010-07-16T00:01:59.007 に答える