Search code examples
ruby-on-railsfacebookomniauthkoala-gem

Rails Koala gem - get user's country


I'm using OmniAuth and the Koala gem to add Facebook Connect to my app and i'm trying to get the user's country.

So far I have:

graph = Koala::Facebook::API.new(user.oauth_token)
profile = graph.get_object("me")

profile["location"] gives me the id and name of the city.

I've tried: graph.get_object(city_id) which returns the city object, but I can't find any mention of the city's country in it.

I can also get the country name from the location string: "Kfar Saba, Israel" but that seems like a hack... Any official way to get what i'm looking for? Thanks!


Solution

  • There's the issue that the location data is not always complete for Place pages. I think you'll need to implement the location string parsing as a fallback if the location.country field of the Place page is empty. Be aware that the location string may also contain the location.state, which means that you'll have to use the last token after the split by comma.

    Graph API returns no country for the named city: https://developers.facebook.com/tools/explorer?method=GET&path=114269838585202&version=v2.0

    See https://developers.facebook.com/docs/graph-api/reference/v2.0/page#readfields for the Page object structure.