Recuperar atributos do OpenID AX do Google / Yahoo no Rails
Estou usando o plugin railsopen_id_authentication no meu aplicativo. Isso funciona para o MyOpenID; no entanto, ao autenticar com o Google, não consigo obter o endereço de e-mail como parte dos atributos obrigatórios.
Pelo que entendi, o Google ignora as solicitações de atributo sreg e só escuta o esquema do AX para o endereço de e-mail.
Aqui está meu código:
def open_id_authentication(openid_url)
#google only responds to AX for email, so we must provide that also
authenticate_with_open_id(openid_url, :required => [:nickname, :email, 'http://axschema.org/contact/email']) do |result, identity_url, registration|
if result.successful?
@user = User.find_or_initialize_by_identity_url(identity_url)
if @user.new_record?
unless registration['email'] || registration['http://axschema.org/contact/email']
failed_login "Your OpenID provider didn't send us an email address."
return
end
#some providers (like Google) won't send a nick name. We'll use email instead for those
nick = registration['nickname']
nick |= registration['email']
nick |= registration['http://axschema.org/contact/email']
email = registration['email'];
email |= registration['http://axschema.org/contact/email']
@user.login = nick
@user.email = email
@user.save(false)
end
self.current_user = @user
successful_login
else
failed_login result.message
end
end
No meu entender, envio o endereço de e-mail (sreg e AX) comorequeridos e eu deveria ser capaz de tirá-los doregistration
instância que é passada junto com a resposta.
Quando faço login com o Google, o endereço de e-mail é passado como 't'.
Estou lidando com isso incorretamente? Como posso obter o endereço de e-mail do usuário do Google? Terei que passar por outros aros para apoiar o Yahoo?