我一直在玩弄 JanRain OpenID PHP 库,主要是跟随我在 ZendZone 上找到的教程。
如何区分用户 - 尤其是最终使用相同 OpenID URL https://www.google.com/accounts/o8/id的 Google 用户?
基本上,我可以检测到他们有一个 OpenID 帐户……他们已经成功通过身份验证……但我的应用程序仍然不知道他们是谁;只是他们进行了身份验证。
为了区分用户,本教程使用“简单注册请求”来请求用户的 OpenID 提供商的电子邮件 - 然后使用电子邮件地址查看这是否是返回用户。
它对我不起作用,显然不适用于某些提供商,所以当我偶然发现一个 function 时我很兴奋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
更改返回的值。