나는 Rayan Bates http://railscasts.com/episodes/170-openid-with-authlogic 소스를 기반으로 놀고있었습니다.Authlogic 및 OpenID 등록 및 로그인 한 번에
Google, Yandex, OpenID와 같은 OpenID 제공 업체의 아이콘을 거의 만들지 않으므로 어느 것을 사용할 지 선택해야합니다 (stackoverflow와 유사). 그래서 모든 것이 좋습니다. 이제 로그인 또는 등록을 위해 단 한 번의 클릭 만하기로 결정했습니다. 사용자가 Authlogic 아이콘을 클릭하면 새 사용자를 만들고 인증하거나 사용자가 있으면 인증합니다. 그래서 사용자 번호에 로직을 변경하는 공동 작성 : 사용자가 저장 될 수없는 경우
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
을 반환하지 않습니다. 내가
이 재미 있습니다. – fl00r
을 살펴 보겠습니다. UserSession 모델의'auto_register'만으로 충분합니다. – fl00r
'auto_register'에 버그가 있습니다. 사실 나는 커밋으로 내 애플 리케이션을 패치했습니다. 최신 커밋을보십시오. 패치없이 auto_register를 사용하면 open-id 공급자로부터 전자 메일 주소 (또는 sreg/ax)를 반환하지 않습니다 !! –