Facebook的FQL用户表`sex`场:如何返回男性/女性即使用户在使用不同的语言环境?(Fac

2019-08-21 19:58发布

情况:

我的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的用户是有英语以外的其他语言环境查询所有的男性/女性朋友?

Answer 1:

添加以下功能到你的一个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



Answer 2:

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

只是通过英语语言环境(EN_US)到API调用,它应该回到你的性别,英文(男/女)。

您也可以找到http://forum.developers.facebook.com/viewtopic.php?pid=166744有用。



Answer 3:

如果有人在使用Facebook的API AS3:制定出这个问题,通过“区域设置”为PARAM使用en_US区域获得性别信息:

Facebook.api( “/我”,getMeHandler,{区域设置: 'EN_US'});

这将返回英语“男” /“女”的价值观,而不是局部的。



Answer 4:

您需要添加&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?