2012-04-02 66 views
1

我是一名Ruby和Rails初学者,但我设法使用OmniAuth通过Facebook进行身份验证。一切工作正常,我能够创建用户,他们能够登录Facebook。从Facebook获取信息OmniAuth身份验证散列

问题是,我想采取一些用户数据(如电子邮件,个人资料照片等)并保存。

通过README(https://github.com/mkdynamic/omniauth-facebook)去,我设法找到:

下面是request.env [ 'omniauth.auth']可用一个例子验证哈希:

{ 
    :provider => 'facebook', 
    :uid => '1234567', 
    :info => { 
    :nickname => 'jbloggs', 
    :email => '[email protected]', 
    :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 
    } 
} 

我试着做更多搜索认证哈希,并得到这列出了一些可以获取的信息:https://github.com/intridea/omniauth/wiki/Auth-Hash-Schema

事情是,我问了一定的权限。问题是,我怎么知道Facebook发送什么样的信息?不幸的是,说这个信息在request.env ['omniauth.auth']中并不是很好。我如何从这里获取信息?

我是一个真正的初学者,通过Rails教程(http://ruby.railstutorial.org/),但试图通过反复试验来创建我自己的应用程序。

回答

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 

你可能会发现下面的截屏有用的,如果你还没有看到它已经:

http://railscasts.com/episodes/235-omniauth-part-1

+0

谢谢。看着railscast展示了如何获取信息。 – Victor 2012-04-03 08:02:15

+0

有一个问题。我不确定这是否应该是在一个新的问题,但从身份验证哈希拉数据后,有些重复。例如,用户可能有多个雇主。我该如何处理?我只对最近的雇主感兴趣。 – Victor 2012-04-03 08:04:34

+0

我需要查看数据。哈希通常是无序的。它会给你约会吗? – 2012-04-03 13:07:51