2011-09-09 73 views
0

Facebook UID對於一個用戶而言總是唯一嗎?例如,如果用戶永久刪除了他們的賬戶,Facebook可能會將他們的UID重新用於新用戶嗎?或者,甚至可以將它用作「城市」或「地方企業」頁面的無生命標識?我可以在Facebook應用程序中使用UID作爲用戶的主鍵,而不用擔心它們將來與其他事物相關聯嗎?Facebook用戶ID(UID)是Facebook Apps的未來證明密鑰嗎?

我一直沒有找到任何文件證明他們將來不會被重複使用。

這個問題或多或少地問同樣的事情 (Facebook app database issue: Store my own User ID or just use Facebook UID?) 然而,答案不提供任何證據證明的UID將保持獨特的未來。

回答

1

答案取決於你所指的Facebook UID。如果您正在討論與用戶帳戶關聯的毫無意義的整數值,那麼您可能確定。如果你在談論用戶名,那麼這是一個有意義的關鍵,我認爲你需要小心。

如果您可以在Facebook API文檔中找到一條聲明,表明它不會發生,並且簽署了Mark Zuckerberg的血統,那並不重要。如果您使用有意義的密鑰值,那麼密鑰在將來可能會發生變化的風險總是存在一些。

風險可能很小。 「未來」可能比您的應用程序的範圍更長。但是,在未來的某個時候,Facebook可能肯定會決定回收一個已被停用或刪除的用戶ID,以便其他同名的用戶可以擁有它。

這是一些proof它可能發生。

如果您不知何故想確定您的應用程序能夠區分今年的Facebook.com/Harman和明年(或2015年等),那麼您應該保留自己的無意義PK並將其映射到Facebook密鑰一個有效的日期範圍,像這樣一起:

FB_USER_KEY_MAP 
    my_pk_value IDENTITY, 
    fb_pk_value, 
    effective_date, 
    expiry_date 

這是絕對確保你的PK是獨一無二的,不僅因爲它只是在你的表中只出現一次,但也是唯一的方法,因爲它總是指完全相同的人/賬戶。

+0

我認爲這可能是最好的答案,直到Facebook出來,並明確表示,他們將永遠不會重新分配UID。儘管我並不是故意想要將UID稱爲用戶名,但我仍然認爲這個答案可以幫助所有對此問題感到困惑的人。它提供了一種保護自己免受FB可能對UID做出的任何更改的好方法(因爲它仍然可能,但不太可能)。它還包含其他答案的共識...... Facebook會重新分配UID嗎?可能不會。 –

+0

你如何知道何時設置失效日期?並以什麼價值? –

+0

我通常會根據插入衝突的外部主鍵值來設置到期日期。您是否知道確切的日期取決於您熟悉外部數據源的方式。您可以使用系統首先注意到衝突的日期和時間。對於您自己的系統中的任何目的而言,這應該足夠好。 –

1

該UID將永遠是唯一的。

將主鍵(PK)設置爲auto-incrememnet是常見的做法,它被歸類爲「在此表中創建的行數」,並且不考慮刪除的行。因此,即使添加3行然後刪除它們,自動增量仍然設置爲4,這將是插入的下一行的ID。

這可能是「它沒有記錄在任何地方,它到處都有記錄」的情況:P這是應該總是隱含的那些東西之一;一個PK永遠不會被用於不同的事情兩次。句號。

+0

我認爲你可能是對的,但我沒有看到Facebook的文檔中的任何地方,他們甚至稱他們的「主鍵」的UID。它確實看起來像一個主鍵,但是它們不可能在他們的數據庫中使用不同的主鍵而不顯示公共?我認爲如果Facebook能夠明確地表達這些重要的信息,不管它看起來有多強烈,這都會很好。 –

+0

它總是可能的,你永遠不會知道:)在「這個假設有多安全?」方面,這當然是非常高的,你說的是最低99/100。用戶ID是設置PK的「正確」值,因此它*應該足夠安全。 – Joe

+0

Facebook的文檔中是否有任何地方將UID描述爲設置PK的「正確」值?或者你的意思是說,這是正確的,這是在Facebook開發者之間的常見做法 –

0

無論何時您使用其他人管理的數據,您都很容易受到這些人會搞砸的可能性的影響。

你會發現社會安全號碼(SSN)對個人來說是獨一無二的。但幾十年過去了,社會保障局實際上已經不止一次地分配了這些數字。

Facebook不太可能將這個問題搞砸。但它可能發生,由於人爲錯誤甚至惡意。

相關問題