Facebook PHP SDK 3赢得';不适用于32位系统,facebookids被视为int,可以>;2


Facebook PHP SDK 3 won't work on 32-bit system, facebook ids treated as int and can be > 2147483647, best solution?

我使用的是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位系统上这些类型的数字问题的唯一方法。