2011-10-04 124 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文檔中指定)。 –