首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不请求SReg字段的情况下区分/识别使用OpenID的用户?

如何在不请求SReg字段的情况下区分/识别使用OpenID的用户?
EN

Stack Overflow用户
提问于 2010-06-25 05:41:07
回答 4查看 581关注 0票数 5

我一直在尝试使用JanRain OpenID PHP库,主要是使用a tutorial I found on ZendZone

如何区分用户,特别是谷歌用户,他们最终都使用相同的OpenID网址,https://www.google.com/accounts/o8/id

基本上,我可以检测到他们有一个OpenID帐户...他们已经成功地验证了..。但我的应用程序仍然不知道他们是谁;只知道他们通过了身份验证。

为了区分用户,本教程使用“简单注册请求”来请求OpenID提供商的用户电子邮件-然后使用电子邮件地址来查看这是否是返回的用户。

它对我和apparently won't work with some providers都不起作用,所以当我偶然发现一个函数getDisplayIdentifier时,我很兴奋。

代码语言:javascript
复制
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
// create file storage area for OpenID data
$store = new Auth_OpenID_FileStore('/wtv');
$consumer = new Auth_OpenID_Consumer($store);
$oid_response = $consumer->complete("http://example.com/oir_return");
if ($oid_response->status == Auth_OpenID_SUCCESS) {
    $hopefullyUniqueUserID = $oid_response->getDisplayIdentifier(); // I assumed this would be a relatively permanent way to identify the user...
                                           // I was wrong.
}

不幸的是,几个小时后,getDisplayIdentifier返回的值发生了变化。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-25 21:42:02

问题是Google's OpenIDs are Unique Per-Domain;我一直没有在http://www.mysite.comhttp://mysite.com之间来回切换,这导致了OpenID标识url的更改!

票数 2
EN

Stack Overflow用户

发布于 2010-07-02 00:39:57

浏览一下代码,我认为你想要的是$oid_response->identity_url。对我来说(尽管是在DotNetOpenAuth中,而不是php-openid),返回的结果是

https://www.google.com/accounts/o8/id?id=AItOawmqjknrgk6f9cNdPIVxW43GewJPa1ZW4GE

来自谷歌,ID部分是可复制的,希望对我来说是独一无二的。然而,我没有离开几个小时,看看这是否会改变,所以如果这是你已经从getDisplayIdentifier得到的,很抱歉-但略读源代码看起来它只使用了第一部分,但我不是PHP专家。

票数 5
EN

Stack Overflow用户

发布于 2010-07-01 23:31:40

为什么不简单地使用OpenID地址来识别用户呢?就像电子邮件地址一样,它是独一无二的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3114085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档