Получение информации о пользователе с помощью 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 ответ
Фрагмент кода, который вы показали из документации этого плагина, довольно старый по стандартам Rails. Не ясно, будет ли этот плагин или подход работать, учитывая его возраст и отсутствие очевидной текущей поддержки и принятия.
Хотя вы и не совсем отвечаете на вопрос, если вы хотите рассмотреть более поддерживаемый подход, вы можете взглянуть на Authlogic (последняя важная вещь в аутентификации Rails).
Кроме того: Devise, который в настоящее время привлекает много внимания в сообществе Rails, кажется, не совсем подходит с точки зрения OpenID, хотя выглядит превосходно как фреймворк.
Взгляните на учебник здесь и не пропустите этот эпизод из несравненной серии Railscast. Я обнаружил, что Authlogic просто работает со всем, что я пробовал.