关注此tuto:
http://www.plaxo.com/api/openid_recipe
其中一个步骤是:
需要查看是否OpenID 输入已经属于现有的 您网站上的用户
我的问题:
什么是 OpenID ,就像gmail帐户一样(我还没有其他OP帐号)?在我看来,gmail的 OpenID = https://www.google.com/accounts/o8/id
,但我怎么能用它来查找,因为它对所有用户都一样?
答案 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
标识符不同,此标识符在您使用它的所有站点中都是稳定的,不涉及任何时髦的哈希字符串。