2016-04-27 53 views
1

我有一個Nodejs應用程序,我使用Passeport讓我的用戶通過Oauth連接Facebook或Google。我在連接後存儲基本數據,例如:uid,名字等。Passport.js:UID是唯一的嗎?

我該如何確定,我收到的uid對於給定的用戶將始終是唯一的?我的意思是說,數據來自Facebook或谷歌,爲什麼我不能面對不同用戶的討厭的重複uid?

回答

2

該UID僅在該單個提供者的用戶列表範圍內是唯一的。

This article建議您結合提供者名稱和UID以獲取唯一值。

供應商的名稱和uID的組合將唯一標識我們的應用程序內的用戶。

我會使用提供商的域名,如「google.com」或「com.google」。

4

當您使用Facebook或Google時,您通過OAuth獲取的ID是唯一的。但如果你想使用兩個,那麼我會建議讓你的dbSchema(如果你正在使用貓鼬)這樣 -

var userSchema = new mongoose.Schema({ 
    local: { 
    username: String, 
    password: String 
    }, 
    facebook: { 
    id: String, 
    token: String, 
    email: String, 
    name: String 
    }, 
    google: { 
    id: String, 
    token: String, 
    email: String, 
    name: String 
    } 
});