Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook FQL user table `sex` field : how to return male/female even the user is using different locale?

Situation:

my facebook application ( http://apps.facebook.com/mymagicmirror/ ) needed to detect user's gender, and then query opposite sex or male or female

FQL:

SELECT uid, name, pic, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1='.$user_id.') and sex='male'

Problem: When the facebook user is using other locale, then the 'sex' field doesn't match 'male' and 'female' anymore. Instead, say in Chinese, the sex will become 男性 / 女性, and the FQL for where sex='male' will return zero results.

Any solution to query all male / female friends even if the facebook user is having locale other than english?

like image 887
Unreality Avatar asked Mar 01 '23 04:03

Unreality


1 Answers

Add one of the following functions to your facebookapi_php5_restlib.php file:

Function for users.getInfo:
from: http://forum.developers.facebook.com/viewtopic.php?pid=166745#p166745

public function &users_getInfo_en_US($uids, $fields) {
  return $this->call_method('facebook.users.getInfo',
    array('uids' => $uids, 'fields' => $fields, 'locale' => 'en_US'));
}

Then, you can call users_getInfo_en_US($user, array('sex'));


Functions for FQL:
from the link above but with pid=166866#p166866
One is for the en_US locale (from the post before it) and the other lets you pass in the locale you want to use, like so:

public function &fql_query_localized($query, $locale) 
{
  return $this->call_method('facebook.fql.query',
    array('query' => $query, 'locale' => $locale));
}

Then, just pass in the string 'en_US' for $locale.

like image 159
ma11hew28 Avatar answered Apr 19 '23 16:04

ma11hew28