Я использую facebook PHP SDK версии 3. Оказывается, он не будет работать на 32-битной системе, так как SDK отличает идентификаторы facebook к целым числам, а идентификаторы могут быть больше, чем 2147483647, что представляет собой 32-разрядную систему max integer стоимость.
Я также нашел проблему здесь https://github.com/facebook/php-sdk/issues/11
Есть ли у кого-то, у кого есть «не столь хакерское» решение?
Для этого есть обходной путь. Просто измените целое число на строку
Найти эту строку
$user = $signed_request['user_id'];
и изменить его на
$user = (string) $signed_request['user_id'];
а также найти
$user = $this->getUserFromAccessToken();
и изменить его на
$user = (string) $this->getUserFromAccessToken();
а также найти
$user = $this->getPersistentData('user_id', $default = 0);
измените его на
$user = (string) $this->getPersistentData('user_id', $default = 0);
И это работает. Int не способен обрабатывать такие длинные идентификаторы пользователей на 32-битных системах, поэтому он создает проблемы
Пока Facebook не придумает исправление, я предлагаю вам использовать одно из решений в комментариях.
Преобразование числа в строку – единственный способ разрешить вашу проблему для этих типов чисел в 32-битной системе.