我目前正在通过appengine中的openid使用联合身份验证-使用google,yahoo,myopenid作为提供者
关于我应该在数据库中存储什么以标识回访用户的问题.
我目前正在存储user.getNickname()-(对于google和yahoo,这将返回用户的电子邮件地址).
User user = userService.getCurrentUser();
String username = user.getNickname();
我用它来存储和检索用户特定的数据.
这是正确的进行方式吗? getNickName()是否唯一?我看到User也有一个user.getUserId()方法和一个user.getEmailId()方法.
我应该改用user.getUserId()吗?
解决方法:
> getNickname()-不要使用它.
> getUserId()-这是合乎逻辑的,但是问题可能是如果用户忘记了他们在您的网站上使用的身份(我在google上有多个帐户,还有yahoo和facebook).这可能会导致为一个人创建多个帐户.但是然后,有些人想要这个.此外,即使Google用户更改了电子邮件,也是如此.
>’getEmail()`-实际上类似于ID-唯一标识用户.如果用户使用别名电子邮件登录,则ID可以不同于ID.
无论如何,当用户首次登录时,您应该向他们显示“帐户详细信息”页面(就像这样).另外,您应该使用户能够将身份聚合到一个帐户中.