2011-10-04 97 views
1

我正在使用我的下一个网站的登录系统,并且我想集成登录Facebook账户(以及其他可能的其他openID提供程序)的可能性。如何在数据库中存储开放标识号?

我很好奇什么是存储openID的最佳方式。

我的想法是:

id: INT, AUTO_INCREMENT 
user_id: INT 
network: varchar(2) (fb - Facebook, tw - Twitter, etc.) (2 bytes) 
network_id: INT (4 bytes) 

但实际上却是所有的网络ID的整数? 有没有更好的方法?

+0

是它导致性能问题了吗? – Kiril

+0

不,我只是想确保我的数据库密钥尽可能小,如果可以将network_id存储为数字int/bigint? –

+0

如果它不会导致性能问题,那么不要担心。您的用户不会在乎他们是否等待** 0.290秒**,因为您的查询运行,因为网络ID列是16个字节,或者他们等待**仅0.234秒**,因为网络ID列已优化为4个字节。但是,他们会关心他们是否无法登录(粗略地说),因此请在登录页面启动并运行之前,不要担心性能问题,直到您需要扩展为止。 – Kiril

回答

1

我不知道了Twitter,但用户ID在Facebook是整数,到目前为止我见过的最长的是15号,那么你可能需要BIGINT

+0

你说得对。 Facebook的ID必须存储为BIGINT(它在旧的Facebook API文档中指定)。 –