Ruby open_id_authentication с помощью Google OpenID
Я делаю первые шаги по реализации OpenID в своем приложении Rails.open_id_authentication оказался довольно простым в использовании плагином, поэтому я решил использовать его.
Вход в систему с моей учетной записью Google, кажется, работает отлично, однако я не получаю поля sreg / AX, которые мне требуются. Мой код в настоящее время выглядит следующим образом:
class SessionsController < ApplicationController
def new; end
def create
open_id_authentication
end
protected
def open_id_authentication
authenticate_with_open_id(params[:openid_identifier], :required => ["http://axschema.org/contact/email"]) do |result, identity_url, registration|
if result.successful?
p registration.data
@current_user = User.find_by_identity_url(identity_url)
if @current_user
successful_login
else
failed_login "Sorry, no user by that identity URL exists (#{identity_url})"
end
else
failed_login result.message
end
end
end
private
def successful_login
session[:user_id] = @current_user.id
redirect_to(root_url)
end
def failed_login(message)
flash[:error] = message
redirect_to(new_session_url)
end
end
Я уже читал различные дискуссии о Google OpenID, и все только говорят, что вам требуется схема AX вместо поля sregemail
, но даже когда я это делаю (как вы можете видеть в коде выше), registration.data останется пустым ({}
).
Как эффективно запросить электронную почту от большинства поставщиков OpenID с open_id_authentication?