首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Koala Facebook图形API?

如何使用Koala Facebook图形API?
EN

Stack Overflow用户
提问于 2012-02-27 22:39:34
回答 3查看 3.6K关注 0票数 0

我是个铁路新手。我想使用Koala的Graph。

在我的控制器里

代码语言:javascript
复制
@graph = Koala::Facebook::API.new('myFacebookAccessToken')
@hello = @graph.get_object("my.Name")

当我这样做的时候,我会得到这样的东西

代码语言:javascript
复制
{
"id"=>"123456", 
"name"=>"First Middle Last", 
"first_name"=>"First", 
"middle_name"=>"Middle", 
"last_name"=>"Last", 
"link"=>"http://www.facebook.com/MyName", 
"username"=>"my.name", 
"birthday"=>"12/12/1212", 
"hometown"=>{"id"=>"115200305133358163", "name"=>"City, State"}, "location"=>{"id"=>"1054648928202133335", "name"=>"City, State"}, 
"bio"=>"This is my awesome Bio.", 
"quotes"=>"I am the master of my fate; I am the captain of my soul. - William Ernest Henley\r\n\r\n"Don't go around saying the world owes you a living. The world owes you nothing. It was here first.\" - Mark Twain", 
"work"=>[{"employer"=>{"id"=>"100751133333", "name"=>"Company1"}, "position"=>{"id"=>"105763693332790962", "name"=>"Position1"}, "start_date"=>"2010-08", "end_date"=>"2011-07"}],
"sports"=>[{"id"=>"104019549633137", "name"=>"Sport1"}, {"id"=>"103992339636529", "name"=>"Sport2"}], 
"favorite_teams"=>[{"id"=>"105467226133353743", "name"=>"Fav1"}, {"id"=>"19031343444432369133", "name"=>"Fav2"}, {"id"=>"98027790139333", "name"=>"Fav3"}, {"id"=>"104055132963393331", "name"=>"Fav4"}, {"id"=>"191744431437533310", "name"=>"Fav5"}], 
"favorite_athletes"=>[{"id"=>"10836600585799922", "name"=>"Fava1"}, {"id"=>"18995689436787722", "name"=>"Fava2"}, {"id"=>"11156342219404022", "name"=>"Fava4"}, {"id"=>"11169998212279347", "name"=>"Fava5"}, {"id"=>"122326564475039", "name"=>"Fava6"}], 
"inspirational_people"=>[{"id"=>"16383141733798", "name"=>"Fava7"}, {"id"=>"113529011990793335", "name"=>"fava8"}, {"id"=>"112032333138809855566", "name"=>"Fava9"}, {"id"=>"10810367588423324", "name"=>"Fava10"}], 
"education"=>[{"school"=>{"id"=>"13478880321332322233663", "name"=>"School1"}, "type"=>"High School", "with"=>[{"id"=>"1401052755", "name"=>"Friend1"}]}, {"school"=>{"id"=>"11482777188037224", "name"=>"School2"}, "year"=>{"id"=>"138383069535219", "name"=>"2005"}, "type"=>"High School"}, {"school"=>{"id"=>"10604484633093514", "name"=>"School3"}, "year"=>{"id"=>"142963519060927", "name"=>"2010"}, "concentration"=>[{"id"=>"10407695629335773", "name"=>"c1"}], "type"=>"College"}, {"school"=>{"id"=>"22030497466330708", "name"=>"School4"}, "degree"=>{"id"=>"19233130157477979", "name"=>"c3"}, "year"=>{"id"=>"201638419856163", "name"=>"2011"}, "type"=>"Graduate School"}], 
"gender"=>"male", 
"interested_in"=>["female"], 
"relationship_status"=>"Single", 
"religion"=>"Religion1", 
"political"=>"Political1", 
"email"=>"somename@somecompany.com", 
"timezone"=>-8, 
"locale"=>"en_US", 
"languages"=>[{"id"=>"10605952233759137", "name"=>"English"}, {"id"=>"10337617475934611", "name"=>"L2"}, {"id"=>"11296944428713061", "name"=>"L3"}], 
"verified"=>true,
"updated_time"=>"2012-02-24T04:18:05+0000"
}

如何以良好的格式在视图中显示整个哈希?

这是我从我学到的东西中所做的。在我看来

代码语言:javascript
复制
<% @hello.each do |key, value| %>
<li><%=h "#{key.to_s} : #{value.to_s}" %></li>
<% end %>

这会让整件事变成一张清单..。如果只有一把钥匙,那就太棒了.但是如何使用多个键而只显示信息..。类似于当它输出hometown : City, State时,而不是类似于

代码语言:javascript
复制
hometown : {"id"=>"115200305133358163", "name"=>"City, State"}

也是为了教育,如果我只是说education[school][name]来显示上过的学校的名单?

我得到的错误是can't convert String into Integer

我也试图在我的控制器中这样做,但是我也得到了同样的错误。

代码语言:javascript
复制
@fav_teams = @hello["favorite_teams"]["name"]

另外,如何将所有这些保存到数据库..。就像所有学校的名单一样。不是他们的身份证吗?

更新:

我计划保存到数据库的方式是..。就用户模型而言,我想将数据库保存为:facebook_id、:facebook_name、:facebook_firstname、.、:facebook_hometown ..我只想保存名字..。说到教育..。我想拯救..。学校、注意力和类型..。我不知道如何实现这一点..。

期待着帮助!谢谢!

EN

回答 3

Stack Overflow用户

发布于 2012-02-27 22:55:23

要以打印得很好的方式显示散列,请使用gem '打印‘。将此添加到Gemfile中:

gem 'awesome_print'

然后运行:bundle install

然后,在您的视图中,可以添加:<%= ap @hello %>

如何在数据库中存储的问题需要更多关于您计划如何使用它的信息,但至少您可以创建一个模型,在该模型上添加一个“facebook_data”(类型为“text”),然后序列化它(在您的模型文件顶部添加这一行:serialize :facebook_data)。然后,您可以将哈希(在本例中为@hello)分配给模型的“facebook_data”属性,然后保存模型。但是,这样您就不能很容易地查询数据库中的这些facebook数据的各个属性。

票数 0
EN

Stack Overflow用户

发布于 2012-03-18 04:36:38

您只需执行@hello["name"],它就会给出名称的值。

票数 0
EN

Stack Overflow用户

发布于 2014-08-02 01:28:00

您的@hello对象应该属于Koala::Facebook::API::GraphCollection类或类似的类。您应该能够遍历这个对象,就像您的问题演示的那样。假设您的rails用户模型类名为User,那么在循环中放置哪些代码可以帮助您将记录保存到数据库中,请尝试如下所示:

代码语言:javascript
复制
@hello.each do |h|
  u = User.where(:facebook_id => h["id"]).first_or_initialize
  u.update_attributes(
    :name => h["name"],
    :first_name => h["first_name"],
    :hometown_city => h["hometown"]["name"].split(",").first,
    :hometown_state => h["hometown"]["name"].split(",").last.strip
    # ETC, ETC
  )
end

在家乡和教育领域,你只需要用正确的方式遍历红宝石。有关更多信息,请参见文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9473505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档