Ну, я пытаюсь внедрить Steam OpenID на сайт, но я не совсем уверен, как это делается и как Steam проверяет пользователей, которые вошли в систему с OpenID.Как работает проверка пользователя OpenID?
На данный момент я обнаружил, что пар только возвращает идентификатор пользователя и ничего больше, поэтому для остальных вещей мне придется использовать API для получения другой информации о пользователе.
Но я не совсем уверен, как пользователи получают подтверждение на веб-сайте после входа в систему через OpenID.
Нужно ли делать сеанс или устанавливать cookie или хранить пользователя в базе данных после того, как пользователь зарегистрирован в OpenID?
try {
# Change 'localhost' to your domain name.
$openid = new LightOpenID('http://localhost/openid');
if(!$openid->mode) {
if(isset($_GET['login'])) {
$openid->identity = 'http://steamcommunity.com/openid';
header('Location: ' . $openid->authUrl());
}
echo '<li><a href="?login"><img border="0" src="http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_small.png" /></a></li>';
}
elseif($openid->mode == 'cancel') {
echo 'User has canceled authentication!';
}
else {
$_SESSION['loged']=1;
header('Location: http://localhost/openid');
}
if(isset($_SESSION['loged'])) {
echo '<li><a href="?logout">Logout</a></li>';
}
if(isset($_GET['logout'])) {
unset($_SESSION['loged']);
}
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
}
catch(ErrorException $e) {
echo $e->getMessage();
}
Im принимая этот код в качестве примера
Я предполагаю, что
if(!openid->mode)
означает, что если не OpenID установлен? чем я должен показывать кнопку входа и перейти к OpenId поставщика для входа, если я нажимаю эту кнопку
И дальше, иначе, если пользователь не войти в шоу Отменить сообщение
или следующая часть, если пользователь loged в так так openid возвращает только идентификатор пользователя. Мне нужно как-то разобраться с ним и оставить его на моем сайте, для этой части я должен установить сеанс или файл cookie, который я установил для сеанса и перенаправил пользователя на домашнюю страницу.
Но я ничего не понимаю.
Почему моя кнопка входа в систему отображается постоянно?
И это
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
Почему это не работает? это всегда показывает пользователю не LoggedIn
Да, это помогло мне, я все еще не совсем уверен, как это работает, но у меня есть то, что я хотел достичь, теперь у меня есть пользователи, прошедшие проверку, зарегистрированные на веб-сайте и в сеансе, и вот что мне нужно было сделать дальше с веб-сайтом. Благодарю. –