3

我目前使用的联合身份验证通过OpenID在AppEngine上 - 使用谷歌,雅虎,myOpenID来说作为供应商OpenID支持AppEngine上

有一个问题,什么我应该在我的分贝存储识别回访用户。 我目前正在存储user.getNickname() - (对于谷歌和雅虎这将返回用户的电子邮件地址)。

User user = userService.getCurrentUser(); 
String username = user.getNickname(); 

我使用它来存储和检索用户特定的数据。

这是正确的方法吗? getNickName()是唯一的吗?我看到用户也有一个user.getUserId()方法和一个user.getEmailId()方法。

我应该使用user.getUserId()来代替吗?

回答

4
  1. getNickname() - 不要用这个。

  2. getUserId() - 这是合乎逻辑的,但问题可能是,如果用户忘记他们与您的网站使用其身份(我与谷歌,雅虎以及Facebook和多个帐户)。这可能会导致为一个人创建多个帐户。但是,有些人想要这个。而且,即使用户更改了电子邮件,Google用户也是如此。

  3. “getEmail()` - 实际上类似于ID - 唯一地标识用户。如果用户使用别名电子邮件登录可以不同,则ID。

总之,在用户登录时,第一次你应该帐户详情页中展示他们(像这样做)。此外,您应该让用户能够将身份汇总到一个帐户中。

+1

不要使用'getEmail' - 它是由OpenID提供商提供的,但它不能保证准确。任何用户都可以申请任何电子邮箱 – 2011-03-07 23:20:46

+0

感谢Peter/Nick。我已经决定继续使用getUserId(),并假设,如果用户可以(有时会不小心)创建两个账户。 – user275157 2011-03-08 02:54:30

相关问题