PhotoHunt目前是這麼做的。它通過執行以下步驟執行此操作:
- 當用戶登錄時存儲用戶的Google+標識(或電子郵件,在您的情況下)。爲了簡單起見,我們稱第一個登錄用戶Alice。
- 當新用戶,鮑勃,在標誌,執行people.list API調用來列出誰鮑勃可見到您應用了Google+ ID和比較這對已經存儲在您的網站的用戶的Google+的IDS。
- 如果有人在Bob的可見人們已經在網站上,由Google+ ID的比較所示,創建表明鮑勃與愛麗絲這種關係在您的私人社交圖中的邊。例如,如果Bob在Alice上對Alice進行圈選,他與Alice(Bob - > Alice,Bob將Alice圈出來,所以邊緣是Bob到Alice)建立了連接,並且創建從Alice到Bob的連接(Alice與Bob Bob在他的圈子裏有Alice)。
- 同樣的關係將被繪製的第三個用戶,切特,誰既有Alice和Bob在可見的圈子,並在圈Bob和Alice的列表。
在視覺上,我描述的圖被如下,箭頭表示從一個用戶到另一個邊緣:
對於Photohunt,從任何用戶給任何其他用戶的邊緣將創建他們在網站上看到對方的關係。在此過程中,您可以創建最全面的用戶圖表,最大限度地增加用戶之間的連接並最大限度地增加關係內容流中顯示的內容數量。
由於圖形以這種方式解釋爲Photohunt,Bob,Alice和Chet都看到他們通過Google+建立了關係,這反映在「社交」內容流中。從計算上來說,每次新用戶連接到您的網站時,您只需要執行檢查。
但是,可能存在隱私影響:Alice是否希望Bob知道她在網站上?
爲了減輕這種隱私問題,您還可以通過對Alice的可見人員執行第二次people.list API調用,以確認Alice在Bob的圈子中時執行另一次檢查。當Bob與Alice之間存在連接時,可以確保Bob與Alice之間存在關係,然後再揭露這兩個用戶都在該網站上。因此,只有具有相互聯繫的人才會知道他們在網站上。對於這種情況,只有切特和愛麗絲纔會看到對方,只有鮑勃和切特會看到對方。因爲鮑勃和艾麗斯沒有相互的聯繫,他們沒有看到對方。
該圖的第三種解釋是跟蹤「在可見的人」,關係,跟蹤「在我的可見人列表中」,最後,「已經相互可見」在您的網站上。
正如Brett指出的那樣,Joanna澄清說,對於產生相互關係或部分關係有性能影響。您要麼必須保留一份邊緣圖,以保存存儲您網站上尚未存在的連接的Google+用戶ID,否則您必須有效地輪詢所有識別連接的用戶。但是,如果您想將資源投入到生成私人圖形中,則可以在今天完成此操作。在手機上執行這些計算的含義相當可怕。如果你這樣做,我會建議在PHP/MySQL服務器上計算和維護圖形服務器端。
從數據庫的角度來看,您只會存儲「邊緣」關係。這極大地簡化了對圖的查詢,並且僅返回具有創建要跟蹤或公開的關係所需的正確邊緣約束的用戶。
我假設你有一個後端存儲這些信息。你的後端使用什麼語言和什麼樣的數據存儲? – BrettJ 2013-05-01 14:59:22