我是Ruby和Rails的初学者,但我设法通过Facebook使用OmniAuth进行身份验证。一切正常,我能够创建用户,他们可以使用Facebook登录。
问题是,我想提取一些用户数据(如电子邮件,个人资料照片等)并保存。
通过自述文件(https://github.com/mkdynamic/omniauth-facebook),我找到了:
以下是request.env ['omniauth.auth']中提供的身份验证哈希示例:
{
:provider => 'facebook',
:uid => '1234567',
:info => {
:nickname => 'jbloggs',
:email => 'joe@bloggs.com',
:name => 'Joe Bloggs',
:first_name => 'Joe',
:last_name => 'Bloggs',
:image => 'http://graph.facebook.com/1234567/picture?type=square',
:urls => { :Facebook => 'http://www.facebook.com/jbloggs' },
:location => 'Palo Alto, California',
:verified => true
}
}
我尝试在Authentication Hash上进行更多搜索,并获取了一个列出了一些可以提取的信息:https://github.com/intridea/omniauth/wiki/Auth-Hash-Schema
问题是,我要求某些权限。问题是,我怎么知道Facebook发送的是什么类型的信息?不幸的是,在request.env ['omniauth.auth']中说信息对我来说不是很好。我如何从这里获取信息?
我是一个真正的初学者,通过Rails教程(http://ruby.railstutorial.org/)但尝试通过反复试验来创建我自己的应用。
答案 0 :(得分:2)
request.env ['omniauth.auth']会给你一个哈希值。检查Ruby文档,了解使用哈希可以做什么。
http://ruby-doc.org/core-1.9.3/Hash.html
对于任何并非总是存在的元素,您只需检查blank?
(Rails便捷方法),例如
omniauth = request.env['omniauth.auth']
unless omniauth['info']['email'].blank?
send_spam omniauth['info']['email'] # ;)
end
如果你还没有看过,你可能会发现以下截屏视频: