我的会话控制器中有以下代码,用于将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
答案 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']