Rayan Bates http://railscasts.com/episodes/170-openid-with-authlogicソースをベースにして遊んでいました。
そのため、Google、Yandex、OpenID などの OpenID プロバイダー用のアイコンをいくつか作成し、ユーザーは使用するものを選択する必要があります (ここのスタックオーバーフローと同様)。だからすべてが大丈夫です。ここで、ログインまたは登録を 1 回クリックするだけにすることにしました。ユーザーがアイコンをクリックすると、Authlogic は新しいユーザーを作成して認証するか、ユーザーが存在する場合は認証するだけです。そこで、User#create で変更ロジックに結び付けました。
class UsersController < ApplicationController
def create
@user = User.new(params[:user])
@user.save do |result|
if result
redirect_to root_url
else
@user_session = UserSession.new(:openid_identifier => @user.openid_identifier)
@user_session.save
redirect_to root_url
end
end
end
end
そのため、ユーザーを保存できない場合、Authlogic はそのユーザーを認証しようとします (もちろん、同じ openid_identifier を持つ別のユーザーが存在する場合だけでなく、たとえば、ユーザーを保存することはできません)。しかし、これらのスキームは機能しません。この場合、何@user_session.save
も返されません。
更新
Shripad Kのリンク ソース ( http://github.com/shripadk/authlogic_openid_selector_example/blob/master/app/models/user_session.rb ) を調べると、次のことがわかりました。
class UserSession < Authlogic::Session::Base
auto_register
end
auto_register
が私が必要な全てです