实现OpenID

时间:2010-04-28 05:39:09

标签: openid

关注此tuto:

http://www.plaxo.com/api/openid_recipe

其中一个步骤是:

  

需要查看是否OpenID   输入已经属于现有的   您网站上的用户

我的问题:

什么是 OpenID ,就像gmail帐户一样(我还没有其他OP帐号)?在我看来,gmail的 OpenID = https://www.google.com/accounts/o8/id,但我怎么能用它来查找,因为它对所有用户都一样?

3 个答案:

答案 0 :(得分:3)

对于与用户对应的一些唯一字符串https://www.google.com/accounts/o8/id?id=XXXXXXXX实际上是XXXXXXXX

从您关联的页面的下方开始:

  

当OpenID提供商重定向到   你的return_to网址,他们会添加一个   一堆额外的查询字符串   包含的参数   验证所需的信息   用户对此进行身份验证   OpenID的。取决于OpenID   您正在使用的库,您可能需要   将它们收集到一个数据结构中   传入验证   功能,或者它可以为你做。

其中一个是字符串。来自Google OpenID文档:

  

Google提供的标识符   与用户没有任何关系   实际的Google帐户名称或   密码,作为查询附加   参数openid.claimed_id。

答案 1 :(得分:1)

https://www.google.com/accounts/o8/id是您用于登录的内容。成功登录后,Google的回复将包含openid.claimed_id变量中的长唯一网址(带有哈希值);这是您应该存储在数据库中的那个,并比较它是新用户还是现有用户。

在myopenid等其他openid提供程序中,(login url和claims_id)都相同。

答案 2 :(得分:1)

这里的关键区别是https://www.google.com/accounts/o8/id不是OpenID标识符,而不是教程的含义。因为,正如您所指出的,对所有用户来说都是一样的。在terminology of the specification中,它是“OP标识符”,它标识提供商(Google),而不是用户。

这种做法(输入提供者的标识符而不是用户的标识符)在编写OpenID-Enabling Your Site 的配方时并不常见。使用此流时,在用户通过id_res响应从用户重定向回您的网站之前,您没有该用户的标识符。

另外,Google确实提供了更清晰的标识符网址。如果您设置了Google个人资料,那么您的个人资料页面(http://www.google.com/profiles/myProfileName)也是一个OpenID。与/accounts/o8/id标识符不同,此标识符在您使用它的所有站点中都是稳定的,不涉及任何时髦的哈希字符串。