2009-06-24 17 views
1

私はレールサイトでauthlogicを実装しましたが、正しく動作するようにopenidを取得しようとしています。これまでのところ、既存のアカウントを持っていればログインできますが、そうでない場合はそれほど多くはありません。 identity_urlがデータベースにない場合は、自動的に新しいアカウントを作成することができます。新しいopenidログインauthlogicを使って新しいユーザーを作成する

問題は、私もいくつかの追加情報を保存する必要があるということです。ユーザーがopenidで最初にログインしている場合は、アカウントが作成される前に基本情報(名前、電子メール)を入力するように依頼したいと思います。

私はいくつかの方法で遊んできましたが、何も動作していないようです。

事前にお問い合わせいただきありがとうございます!

+0

感謝を行うことができます。私がやり遂げたことは、他の誰かが興味を持っている場合には、普通のようにopenidログインを処理していましたが、新しいユーザーをデータベースに保存していませんでした。代わりに、私は彼らの情報をセッションvarに保存し、それらをdbに追加してログインする前に残りの情報を尋ねました。 – Ryan

答えて

0

何らかの種類の一時テーブルに追加情報を入れて、ユーザーがいるセッションを追跡してみてください。認証されたら、以前に入力した情報をopenid情報と接続して、実際のユーザーを作成します。

0
acts_as_authentic do |c| 
    c.openid_required_fields = [:email,"http://axschema.org/contact/email"] 
end 

電子メールが必要になります。私は他のフィールドを要求する方法が不明ですが、axschema.orgページを確認してください。ユーザーがOpenIDプロバイダのURL以外のものを入力する必要はありません。ログインと登録を組み合わせる

は答えあなたの2に(未テストauthlogicチュートリアルのものからのように、UserSessionsコントローラからメソッドを作成する)このようなもので

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 
関連する問題