openid with appengine

时间:2011-03-06 18:31:03

标签: java google-app-engine openid google-openid openid-provider

我目前正通过appeidine中的openid使用联合身份验证 - 使用google,yahoo,myopenid作为提供商

有一个问题,我应该在我的数据库中存储什么来识别返回的用户。 我目前正在存储user.getNickname() - (对于google和yahoo,它会返回用户的电子邮件地址)。

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

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

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

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

1 个答案:

答案 0 :(得分:4)

  1. getNickname() - 请勿使用此功能。

  2. getUserId() - 这是合乎逻辑的,但问题可能是用户忘记了他们在您的网站上使用了哪个身份(我有多个谷歌帐户,加上雅虎和脸谱)。这可能会导致为一个人创建多个帐户。但是,有些人想要这个。此外,即使用户更改了自己的电子邮件,Google用户也会如此。

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

  4. 无论如何,当用户第一次登录时,您应该使用“帐户详细信息”页面显示它们(如同SO一样)。此外,您应该让用户能够将身份聚合到一个帐户中。