Select fql错误:页面id大于最大int值

Select fql错误:页面id大于最大int值,select,facebook-fql,facebook-page,integer,Select,Facebook Fql,Facebook Page,Integer,facebook的开发者声明页面表中的页面id是整数 但由于许多facebook页面,它的数量增加了超过最大int值 因此,fql的select给出了这样的smth e+123213这似乎是一个错误。在图形API中,将此字段称为string 实际上,最好将Facebook返回的id作为string保存/使用,因为在许多情况下id的值会导致溢出整数边界。对于某些对象,id可能包含数字以外的字符(下划线) 更新: 澄清一些事情。问题不仅在于文档,还在于返回数据。API将响应返回为JSON(或者如果

facebook的开发者声明页面表中的页面id是整数

但由于许多facebook页面,它的数量增加了超过最大int值

因此,fql的select给出了这样的smth e+123213

这似乎是一个错误。在图形API中,将此字段称为
string

实际上,最好将Facebook返回的
id
作为
string
保存/使用,因为在许多情况下
id
的值会导致溢出
整数
边界。对于某些对象,
id
可能包含数字以外的字符(下划线)

更新: 澄清一些事情。问题不仅在于文档,还在于返回数据。API将响应返回为JSON(或者如果使用旧的RESTAPI,也可以指定XML格式)
string
。因此,响应确实包含完整且正确的
page\u id
,但在JSON解析阶段,由于它被解析为
integer
,因此您将其丢失

在PHP5.4中,有额外的
选项
参数,可以是
JSON\u BIGINT\u AS\u STRING
,以克服这个问题。您应该检查您使用的解析方法是否支持这样的内容

Facebook上出现了两个针对此问题的错误(不是针对
page
表中的
page\u id
,而是针对其他表中的
uid
字段的相同行为):

实际上,您可以采取一些措施来克服此问题:

  • 如果您使用PHP,您可以:
    • 使用64位版本的运行时,由于PHP\u INT\u MAX更大,因此没有此问题
    • 使用PHP5.4,将
      JSON\u BIGINT\u作为字符串
      选项传递给
      JSON\u decode
  • 如果您使用PHP或任何其他技术:
    • 使用替代JSON解析器(我不知道PHP中有任何JSON解析器能够处理此问题)
    • 使用快速且脏的reqular表达式将响应中的所有数字用引号括起来(“/(\b\d+\b)/”、“$1”、$response)(这是针对PHP的,但你会明白的)

另外,我建议您在Facebook上提交额外的Bug,并更新您的问题,以便我们也可以订阅。

您是否面临此问题,还是您指出了fql中的Bug?我遇到了一个房地产Bug,这会给我错误的结果。问题不在文档中,fql表将其作为整数返回,因为这个值大于max int,所以它把它转换成某种形式的e+4234234@Aziz,我已经添加了关于这个问题的澄清和细节,您可能会发现这很有用;)