1

我的 FQL 返回 UID 的非法字符。这是我的 FQL。 select uid,books from user where uid in (select uid2 from friend where uid1=me()). 我正在使用 PHP SDK,我得到的 id 像1.0000008018280E+14(中间有 'E' 的东西。)。在我总共 600 个联系人中,大约有 400 个这样显示 UID。我尝试指向facebook.com/1.0000008018280E+14,它返回304 page not found 错误。我正在使用的代码是

  $fql_query_url = 'https://graph.facebook.com/'.'fql?q=select+uid,books+from+user+where+uid+in(select+uid2+from+friend+where+uid1=me())'.'&access_token='.$_GET['access'];
   $fql_query_result = file_get_contents($fql_query_url);
   $fql_query_obj = json_decode($fql_query_result, true)

  // display results of fql query
echo '<pre>';
print_r($fql_query_obj);
echo '</pre>'; 
4

1 回答 1

1

根据How to get around or make PHP json_decode not alter my very large integer values?,你可以这样做:

<?php
$fql_query_url = 'https://graph.facebook.com/'.'fql?q=select+uid,books+from+user+where+uid+in(select+uid2+from+friend+where+uid1=me())'.'&access_token='.$_GET['access'];
$fql_query_result = file_get_contents($fql_query_url);
$fql_query_result = preg_replace('/:\s*(\-?\d+(\.\d+)?([e|E][\-|\+]\d+)?)/', ': "$1"', $fql_query_result);
$fql_query_obj = json_decode($fql_query_result, true);

echo '<pre>';
print_r($fql_query_obj);
echo '</pre>'; 
?>

或者,如处理 PHP 中 FQL 返回的大用户 ID 中所述

<?php
$fql_query_url = 'https://graph.facebook.com/'.'fql?q=select+uid,books+from+user+where+uid+in(select+uid2+from+friend+where+uid1=me())'.'&access_token='.$_GET['access'];
$fql_query_result = file_get_contents($fql_query_url);
$fql_query_obj = json_decode(preg_replace('/("\w+"):(\d+)/', '\\1:"\\2"', $fql_query_result), true);

echo '<pre>';
print_r($fql_query_obj);
echo '</pre>'; 
?>
于 2013-04-24T14:10:56.177 回答