Select fql错误:页面id大于最大int值
facebook的开发者声明页面表中的页面id是整数 但由于许多facebook页面,它的数量增加了超过最大int值 因此,fql的select给出了这样的smth e+123213这似乎是一个错误。在图形API中,将此字段称为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(或者如果
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,我已经添加了关于这个问题的澄清和细节,您可能会发现这很有用;)