Как различать/определять пользователей с OpenID, не запрашивая поля SReg?

Я играл с Библиотекой JanRain OpenID PHP, главным образом после наряду с учебным руководством, которое я нашел на ZendZone.

Как каждый различает пользователей - особенно пользователи Google, которые все заканчивают тем, что использовали тот же OpenID URL, https://www.google.com/accounts/o8/id?

В основном я в точке, где я могу обнаружить, что они сделали, чтобы OpenID считал..., что они успешно прошли проверку подлинности..., но мое приложение все еще не знает, кто они; только то, что они прошли проверку подлинности.

Для различения пользователей учебное руководство использует "Простой Регистрационный запрос", чтобы запросить электронную почту пользователя поставщика OpenID - и затем использовать адрес электронной почты, чтобы видеть, является ли это возвращающимся пользователем.

Это не работало на меня и по-видимому не будет работать с некоторыми поставщиками, таким образом, я был взволнован, когда я наткнулся на функцию 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 изменения.

5
задан Community 23 May 2017 в 12:13
поделиться

2 ответа

Просматривая код, я думаю, что вам нужен $ oid_response-> identity_url . Для меня (хотя и в DotNetOpenAuth, а не в php-openid) это возвращается как

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

от Google, где ID и часть воспроизводятся надеюсь, уникальный для меня. Однако я не оставил несколько часов, чтобы увидеть, изменится ли это, поэтому извиняюсь, если это то, что у вас уже было от getDisplayIdentifier - но, просматривая источник, похоже, что он просто использовал бы первую часть, но тогда я не Эксперт по PHP.

5
ответ дан 14 December 2019 в 01:01
поделиться

Почему бы просто не использовать URL-адрес OpenID для идентификации пользователей? Считайте его уникальным, как адрес электронной почты.

1
ответ дан 14 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: