4

情况:

我的 facebook 应用程序 ( http://apps.facebook.com/mymagicmirror/ ) 需要检测用户的性别,然后查询异性或男性或女性

问题解答:

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

问题:当 facebook 用户使用其他语言环境时,“性别”字段不再匹配“男性”和“女性”。相反,用中文说,sex 将变为男性 / 女性,并且 sex='male' 的 FQL 将返回零结果。

即使 facebook 用户的语言环境不是英语,是否有任何解决方案可以查询所有男性/女性朋友?

4

4 回答 4

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'for $locale

于 2010-02-05T04:51:03.953 回答
3

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

只需将英语语言环境 (en_US) 传递给 API 调用,它就会以英语(男性/女性)返回您的性别。

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

于 2009-10-20T15:05:31.230 回答
1

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

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

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

于 2010-11-10T13:32:25.310 回答
0

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

替换第 3320 行:

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

有了这个:

$url_with_get = $this->server_addr . '?' . $get_string . '&locale=en_US';
于 2009-11-27T15:48:59.540 回答