ウェブサイトにSteam OpenIDログインを実装しようとしていますが、それがどのように行われているか、SteamがOpenIDでログインしているユーザーをどのように検証するかはよくわかりません。
今のところ私が見つけたのは、SteamはユーザーIDのみを返し、他には何も返さないため、残りのことについてはAPIを使用してユーザーの他の情報を取得する必要があるということです.
しかし、誰かが OpenID 経由でログインすると、ユーザーが Web サイトでどのように検証されるのかよくわかりません。
ユーザーが OpenID からログインしたら、セッションを作成したり、Cookie を設定したり、ユーザーをデータベースに保存したりする必要がありますか?
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();
}
このコードを例として取り上げます
私はそれを推測する
if(!openid->mode)
openid が設定されていない場合は? ログインボタンを表示し、openidプロバイダーに移動して、そのボタンを押した場合にログインするよりも
次は、ユーザーがログインしていない場合は、キャンセル メッセージを表示します。
または次の部分は、ユーザーがログインしている場合です。openid はユーザー ID のみを返すため、何らかの形で彼に対処し、彼を私の Web サイトにログインさせておく必要があります。その部分では、セッションを設定してリダイレクトしたセッションまたは Cookie を設定する必要があります。ユーザーはホームページに戻ります。
しかし、私はいくつかのことを理解していません。
ログインボタンが常に表示されるのはなぜですか?
この
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
なぜ機能しないのですか?ユーザーがログインしていないことを常に示します