Я играл с библиотекой OpenID PHP от JanRain, в основном следуя вместе с a tutorial I found on ZendZone.Как отличить/идентифицировать пользователей с OpenID без запроса полей SReg?
Как различить пользователей - особенно пользователей Google, которые все используют один и тот же URL OpenID, 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
изменений.
Пожалуйста, внимательно прочитайте спецификацию. 'https: // www.google.com/accounts/o8/id' - это предоставленный пользователем идентификатор, пользователь не обязательно утверждает, что он владеет им, его цель может просто указывать пользователю на выбор идентификатора, равно как и дело с Google. – Artefacto