Это похоже на ошибку в page
таблице документации .В Graph API документация для page
объекта ссылается на это поле как string
.
На самом деле лучше сохранять / использовать любые id
, возвращаемые Facebook как string
, поскольку вво многих случаях значение id
приведет к переполнению через integer
границы.А для некоторых объектов id
может содержать символы, отличные от цифр (подчеркивание).
Обновление: Для уточнения некоторых вещей.Проблема действительно не только с документацией, но и с данными возврата.API возвращает ответ в виде JSON (или, если вы используете старый REST API, вы также можете указать формат XML) string
.Таким образом, ответ содержит полное и правильное значение page_id
, но на этапе синтаксического анализа JSON вы теряете его из-за того, что он анализируется как integer
.
В PHP 5.4 json_decode
function *У 1026 * есть дополнительный параметр options
, который может быть JSON_BIGINT_AS_STRING
, чтобы решить эту проблему.Вы должны проверить, поддерживает ли используемый вами метод синтаксического анализа что-то вроде этого.
Есть несколько ошибок, открытых для этой проблемы на Facebook (это не для таблицы page_id
в page
, но такое же поведение для *Поле 1033 * в других таблицах):
На самом деле вы можете сделать что-то, чтобы преодолеть эту проблему:
- Если вы используете PHP, вы можетелибо:
- используйте 64-битную версию среды выполнения, у которой нет этой проблемы из-за большего
PHP_INT_MAX
- используйте PHP 5.4 с опцией
JSON_BIGINT_AS_STRING
, переданной json_decode
- Если вы используете PHP или любую другую технологию:
- используйте альтернативный синтаксический анализатор JSON (я не знаю ни одного парсера JSON в PHP, который мог бы справиться с этим)
- Используйте быстрое и грязное регулярное выражение, чтобы обернуть все числа в ответth кавычки
$response = preg_replace('/(\b\d+\b)/', '"$1"', $response)
(это для PHP, но вы поймете идею)
Также я рекомендую подать дополнительную ошибку на Facebook и обновить ваш вопрос, чтобы мы могли подписатьсяк этому также.