Passport.js:UID是唯一的吗?

时间:2016-04-27 17:13:07

标签: node.js oauth google-oauth passport.js facebook-login

我有一个Nodejs应用程序,我使用Passeport让我的用户通过Facebook或Google通过Oauth连接。我在连接后存储基本数据,例如:uid,firstname等。

我如何能够确信我收到的uid对于给定的用户来说总是独一无二的?我的意思是,数据来自Facebook或谷歌,所以为什么我有一天不能为不同用户面对一个令人讨厌的重复uid?

2 个答案:

答案 0 :(得分:4)

当您使用Facebook或Google时,您通过OAuth获得的ID是唯一的。但如果您想同时使用两者,那么我建议您使用 dbSchema (如果您使用的是mongoose) -

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
  }
});

答案 1 :(得分:3)

UID仅在该提供商的用户列表范围内是唯一的。

This article建议您将提供程序的名称和UID组合在一起以获取唯一值。

  

提供商名称和uID的组合将唯一标识我们应用内的用户。

我会使用提供商的域名,例如“google.com”或“com.google”。