如何在rails中使用Koala获取用户的位置?

时间:2011-08-17 20:42:46

标签: ruby-on-rails ruby-on-rails-3 facebook-graph-api koala

我的会话控制器中有以下代码,用于将Facebook好友,喜欢和用户个人资料等信息保存到我的数据库中。配置文件包含用户的位置和性别,但它会以字符串形式保存到数据库中,因此无法将其提取出来。

@graph = Koala::Facebook::GraphAPI.new(current_user.token)
current_user.profile = @graph.get_object("me")
current_user.likes = @graph.get_connections("me", "likes")
current_user.friends = @graph.get_connections("me", "friends")
current_user.save

进入控制台,我可以通过以下方式获取最后一位用户的个人资料:

u = User.last.profile

但这并没有让我特别要求这个位置,如:

User.last.profile.location

用户表格如

create_table "users", :force => true do |t|
t.string   "provider"
t.string   "uid"
t.string   "name"
t.datetime "created_at"
t.datetime "updated_at"
t.string   "token"
t.string   "likes"
t.string   "profile"
t.string   "location"
t.string   "interests"
t.string   "birthday"
t.string   "activities"
t.string   "friends"
end

4 个答案:

答案 0 :(得分:4)

像这样?

graph = Koala::Facebook::API.new(@oauth_token)
@user = graph.get_object("me")
location = @user["location"]["name"]

答案 1 :(得分:2)

我正在使用koala v2.2,我的应用Facebook API版本为v2.4。 我仅使用location请求未收到get_object("me")个信息。我必须将location作为fields参数传递给

get_object("me?fields=first_name,last_name,location")

可能此信息对某人有帮助。

N.B:当然你必须启用user_location范围。

答案 2 :(得分:0)

我以前使用的方法是使用范围并在视图中调用这些范围,这可能不是最好的方法,但是可以快速修复。

用户模型的范围可以是:

scope :CityName, where("profile like '%location: CityName%'")

答案 3 :(得分:0)

从昨天开始使用Facebook Checkins,例如:

unless graph.get_connections('me', 'checkins', :since => 'yesterday').blank?
checkin = graph.get_connections('me', "checkins", :since => 'yesterday')
lat = checkin[0]['place']['location']['latitude']
long = checkin[0]['place']['location']['longitude']