Как получить местоположение пользователя с помощью Koala в рельсах? - PullRequest
1 голос
/ 18 августа 2011

В моем контроллере сеансов есть следующий код, который сохраняет информацию, такую ​​как друзья на 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 ]

4 голосов
/ 07 ноября 2011

как это?

graph = Koala::Facebook::API.new(@oauth_token)
@user = graph.get_object("me")
location = @user["location"]["name"]
2 голосов
/ 16 сентября 2015

Я использую koala v2.2, и моя версия Facebook API приложения - v2.4.Я не получил location информацию, используя только get_object("me") запрос.Мне пришлось передать location в качестве параметра fields, например

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

. Может быть, эта информация будет полезна для кого-то.

NB: Конечно, вы должны включить user_location scope,

0 голосов
/ 24 ноября 2011

, чтобы использовать 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']
0 голосов
/ 25 августа 2011

Я использовал этот метод для работы с областями и вызывал эти области в представлении, что может быть не лучшим способом, но это быстрое решение.

Модель пользователя может быть ограничена:

scope :CityName, where("profile like '%location: CityName%'")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...