Como lidar com os novos tamanhos de UID do Facebook?

Eu tenho trabalhado um pouco em um aplicativo do Facebook, mas quando eu registrei um novo usuário para testar a interação do amigo, o novo usuário obteve um uid ( 100000XXXXXXXXX ) que parece grande para o php manipular.

Guardar o número no database resulta no mesmo valor ( 2147483647 ). Eu acho que isso também é culpa do PHP, pois eu acreditaria que o uid se encheckboxria em um bigint não assinado?

Não tenho certeza de onde ir daqui, alguma sugestão?

A correção é armazenar o UID como uma string sempre. Use o tipo de campo VARCHAR no MySQL e você estará bem.

Em geral, muitos gurus de database irão dizer-lhe que interpretar as foreign keys de outro aplicativo (como o UID neste caso) é ruim mau e você deve lidar com eles como texto opaco.

Facebook recomenda para armazená-lo como um BIGINT sem assinatura.

Detalhes do object do User e conexões podem ser encontrados aqui .

Para o PHP, você iria armazená-lo como uma string (porque, em última análise, se você vai usá-lo, ele será exibido na página ou em dados JSON ou qualquer outra coisa que seja stringy. Não há necessidade real de executar a aritmética nesse número).

Estou usando BIGINT UNSIGNED para um par de aplicativos e funciona bem.

Em que tipo de campo MySQL você está armazenando os dados UID? Um bigint não assinado pode armazenar até 18446744073709551615. (Consulte http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html )

Simplesmente atualize seu esquema por meio de algo como …

 ALTER TABLE  MODIFY COLUMN  BIGINT UNSIGNED NOT NULL;

… e eu suspeito que tudo ficará bem.

NB: Você vai querer tentar isso em um backup para garantir que eu não esteja profundamente incorreto. 🙂