facebook的开发人员声明页面表中的page_id是整数。
但是由于许多Facebook页面,它的数量增加了大于最大值
http://developers.facebook.com/docs/reference/fql/page/
所以fql的select给出类似于e + 123213的smth
答案 0 :(得分:1)
这似乎是page
table documentation中的错误。在图表API documentation for page
object中,请将此字段称为string
。
保存/使用Facebook返回的任何id
实际上更好string
,因为在很多情况下,id
的值会导致integer
边界溢出。对于某些对象id
可能包含其他数字(下划线)的字符。
<强>更新强>
澄清一些事情。问题不仅在于文档,还在于返回数据。 API返回响应为JSON(或者如果您使用旧的REST API,则也可以指定XML格式)string
。因此,响应确实包含完整且正确的page_id
,但在JSON解析阶段,由于它被解析为integer
,因此将其松散。
在PHP 5.4 json_decode
function中有额外的options
参数,可能JSON_BIGINT_AS_STRING
来解决此问题。你应该检查你使用的解析方法是否支持这样的东西。
在Facebook上为此问题打开了几个错误(不是page_id
表中的page
,而是其他表上uid
字段的相同行为):
实际上你可以做点什么来克服这个问题:
PHP_INT_MAX
JSON_BIGINT_AS_STRING
选项传递给json_decode
$response = preg_replace('/(\b\d+\b)/', '"$1"', $response)
(这适用于PHP,但你会得到这个想法)另外,我建议在Facebook上提交额外的Bug并更新您的问题,以便我们也可以订阅它。