gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:48:40 25 4
gpt4 key购买 nike

我一直在研究 JanRain OpenID PHP 库,主要是关注 a tutorial I found on ZendZone .

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

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

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

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

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 返回的值发生了变化。

最佳答案

略读代码,我认为您需要的是 $oid_response->identity_url。对我来说(尽管在 DotNetOpenAuth 而不是 php-openid 中)返回为

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

来自谷歌,ID 部分是可复制的,希望对我来说是独一无二的。但是,我还没有离开它几个小时,看看它是否发生了变化,所以如果这是你已经从 getDisplayIdentifier 获得的东西,我深表歉意 - 但浏览源代码看起来它只是使用了第一部分,但我不是PHP专家。

关于php - 如何在不请求 SReg 字段的情况下使用 OpenID 区分/识别用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com