情况:
我的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的用户是有英语以外的其他语言环境查询所有的男性/女性朋友?
添加以下功能到你的一个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的API AS3:制定出这个问题,通过“区域设置”为PARAM使用en_US区域获得性别信息:
Facebook.api( “/我”,getMeHandler,{区域设置: 'EN_US'});
这将返回英语“男” /“女”的价值观,而不是局部的。
您需要添加&locale=en_US
到您的GET或POST请求通过您的API客户端发送。 例如,如果您使用的是被Facebook(11月2日发布了最新版本)提供的PHP客户端库,那么你只需要修改facebookapi_php5_restlib.php
文件的post_request
它开始于3316线功能。
更换线路3320:
$url_with_get = $this->server_addr . '?' . $get_string;
有了这个:
$url_with_get = $this->server_addr . '?' . $get_string . '&locale=en_US';
文章来源: Facebook FQL user table `sex` field : how to return male/female even the user is using different locale?