我使用的是facebooks PHP SDK版本3。事实证明,它在32位系统上不起作用,因为SDK将facebook ID强制转换为整数,并且ID可能大于2147483647,这是32位系统的最大整数值。
我在这里也发现了问题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位系统上处理这么长的用户id,这就是为什么它会在上出现问题
在Facebook提出修复方案之前,我建议您使用评论中的解决方案之一。
将数字转换为字符串是解决32位系统上这些类型的数字问题的唯一方法。