ошибка fql: page_id больше максимального значения int - PullRequest
0 голосов
/ 22 февраля 2012

Разработчики facebook утверждают, что page_id в таблице страниц является целым числом.

Но из-за того, что на многих страницах в Facebook число увеличивается больше, чем значение max int

http://developers.facebook.com/docs/reference/fql/page/

, поэтому выбор fql дает что-то вроде этого e + 123213

1 Ответ

1 голос
/ 22 февраля 2012

Это похоже на ошибку в 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 и обновить ваш вопрос, чтобы мы могли подписатьсяк этому также.

...