代码之家  ›  专栏  ›  技术社区  ›  Unreality

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

  •  4
  • Unreality  · 技术社区  · 16 年前

    情况:

    我的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 回复  |  直到 16 年前
        1
  •  4
  •   user229044    15 年前

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

        3
  •  1
  •   Rosty    15 年前

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

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

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

        4
  •  0
  •   defines    12 年前

    &locale=en_US 由API客户端发送的GET或POST请求。例如,如果您正在使用Facebook提供的PHP客户端库(11月2日发布的最新版本),那么您只需修改 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';
    
    推荐文章