Facebook FQL错误

Facebook FQL错误,facebook,facebook-fql,Facebook,Facebook Fql,如果我错了,请纠正我,但1317448800比1317006752大 您可以通过转到,单击一些内容(例如不参加)来验证这一点,然后我认为您的问题可能是事件创建者和活动用户之间的时区差异。Facebook提供了以下通知: 请注意,开始时间和结束时间是输入的时间 由事件创建者创建。Facebook事件没有时区概念,所以, 通常,您不应该将返回的值视为正在发生 在任何特定的绝对时间。当事件显示在屏幕上时 facebook,没有指定或暗示时区 显然,事件成员中的开始时间纯粹用于加速对事件成员表的查询,该

如果我错了,请纠正我,但1317448800比1317006752大


您可以通过转到,单击一些内容(例如不参加)来验证这一点,然后

我认为您的问题可能是事件创建者和活动用户之间的时区差异。Facebook提供了以下通知:

请注意,开始时间和结束时间是输入的时间 由事件创建者创建。Facebook事件没有时区概念,所以, 通常,您不应该将返回的值视为正在发生 在任何特定的绝对时间。当事件显示在屏幕上时 facebook,没有指定或暗示时区


显然,事件成员中的开始时间纯粹用于加速对事件成员表的查询,该表可以返回许多结果。当事件的开始时间被更新时,它似乎没有被更新。要使查询正常工作,请注意区别:

{
    "eid": 239526399426862,
    "start_time": 1317448800,
    "name": "Nick Grimshaw, The 2 Bears, S.C.U.M. & more! Friday 30th Sept, Only £4.50"
  }

不过我同意这是一个bug。

我今天在获取即将到来的活动时遇到了这个问题: 正确的FQL应该是

SELECT eid, start_time, name
  FROM event 
 WHERE eid IN (SELECT eid 
                 FROM event_member 
                WHERE uid = me() AND start_time < 1317006752)
   AND start_time < 1317006752  
编辑

通过以下方式获取此查询的结果:

SELECT eid,name,description,location,start_time,end_time,pic_big FROM event WHERE eid IN (SELECT eid FROM event_member WHERE start_time>=PLACE_UNIX_TIMESTAMP AND uid=PLACE_UID_HERE) ORDER BY start_time ASC
重要的是将JSON_BIGINT_AS_STRING选项添加到JSON_解码中,以防止eid成为短端浮点表示

编辑2: 作为const JSON_BIG。。。仅可从php5.4.X+获得:

$sql = '/fql?q=SELECT+eid,name,description,location,start_time,end_time,pic_big+FROM+event+WHERE+eid+IN+(SELECT+eid+FROM+event_member+WHERE+start_time>={time}+AND+uid={id})+ORDER+BY+start_time+ASC';
$fql_query_result = file_get_contents('https://graph.facebook.com/' . $sql '&access_token={token}');
$data = json_decode($fql_query_result,true, 512, JSON_BIGINT_AS_STRING));

来源:

当我测试这个时,时差超过了5天,这比Anatoly在事件成员表中指出开始时间的任何时区差都大
$sql = '/fql?q=SELECT+eid,name,description,location,start_time,end_time,pic_big+FROM+event+WHERE+eid+IN+(SELECT+eid+FROM+event_member+WHERE+start_time>={time}+AND+uid={id})+ORDER+BY+start_time+ASC';
$fql_query_result = file_get_contents('https://graph.facebook.com/' . $sql '&access_token={token}');
$data = json_decode($fql_query_result,true, 512, JSON_BIGINT_AS_STRING));
if (defined('JON_BIGINT_AS_STRING')) return json_decode($fql_query_result,true, 512, JSON_BIGINT_AS_STRING);
return json_decode(preg_replace('/([^\\\])":([0-9]{10,})(,|})/', '$1":"$2"$3', $fql_query_result),true);