Facebook FQL пользовательская таблица `sex` field: как вернуть мужчину / женщину, даже пользователь использует другой язык?

Ситуация:

мое приложение facebook ( http://apps.facebook.com/mymagicmirror/ ), необходимое для определения пола пользователя, а затем запросить противоположный секс или мужчину или женщину

FQL:

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

Проблема. Когда пользователь facebook использует другую локаль, поле «секс» больше не соответствует «мужчинам» и «женщине». Вместо этого, скажем, на китайском языке секс станет 男性 / 女性, а FQL, где секс = «мужчина», вернет нулевые результаты.

Любое решение запросить всех друзей-мужчин и женщин, даже если у пользователя facebook есть язык, отличный от английского?

Related of "Facebook FQL пользовательская таблица `sex` field: как вернуть мужчину / женщину, даже пользователь использует другой язык?"

Добавьте одну из следующих функций в файл facebookapi_php5_restlib.php :

Функция для users.getInfo:
от: 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')); } 

Затем вы можете вызвать users_getInfo_en_US($user, array('sex'));


Функции для FQL:
по ссылке выше, но с pid = 166866 # p166866
Один для локали en_US (из сообщения перед ним), а другой позволяет вам пройти в локали, которую вы хотите использовать, например:

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

Затем просто перейдите в строку 'en_US' для $locale .

От http://forum.developers.facebook.com/viewtopic.php?pid=174065 :

Просто перейдите по английскому языку (en_US) к вызову API, и он должен вернуть вам полы на английском языке (мужчина / женщина).

Вы также можете найти http://forum.developers.facebook.com/viewtopic.php?pid=166744 полезно.

Если кто-то использует Facebook AS3 API: чтобы решить эту проблему, передайте «locale» в качестве параметра, чтобы получить информацию по полу, используя en_US locale:

Facebook.api («/ me», getMeHandler, {locale: 'en_US'});

Это вернет английские «мужские» / «женские» ценности, а не локализованные.

Вам нужно добавить &locale=en_US в ваш запрос GET или POST, отправляемый клиентом API. Например, если вы используете клиентскую библиотеку PHP, предоставленную Facebook (последняя версия, выпущенная 2 ноября), вам просто нужно изменить функцию post_request файла facebookapi_php5_restlib.php , которая начинается в строке 3316.

Заменить линию 3320:

 $url_with_get = $this->server_addr . '?' . $get_string; 

С этим:

 $url_with_get = $this->server_addr . '?' . $get_string . '&locale=en_US';