Facebook FQL用户表`sex`字段:即使用户使用不同的语言环境,如何返回男/女?

时间:2009-10-20 14:07:53

标签: php locale facebook-fql

情况:

我的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用户使用的是英语以外的语言环境?

4 个答案:

答案 0 :(得分:4)

将以下功能之一添加到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

答案 1 :(得分:3)

来自http://forum.developers.facebook.com/viewtopic.php?pid=174065

  

只需将英语区域设置(en_US)传递给   API调用它应该返回给你   英语性别(男/女)。

您可能还会发现http://forum.developers.facebook.com/viewtopic.php?pid=166744有用。

答案 2 :(得分:1)

如果有人使用Facebook AS3 API:要解决此问题,请将“locale”作为参数传递,以使用en_US语言环境获取性别信息:

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

这将返回英文“男性”/“女性”值,而非本地化值。

答案 3 :(得分:0)

您需要将&locale=en_US添加到您的API客户端发送的GET或POST请求中。例如,如果您使用的是Facebook提供的PHP客户端库(11月2日发布的最新版本),那么您只需要修改从第3316行开始的facebookapi_php5_restlib.php文件的post_request函数。 / p>

替换第3320行:

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

有了这个:

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