ユーザーがSteam OpenIDを介してログインし、ウェブサイトでいくつかのことを実行できるウェブサイトを構築しようとしています.
しかし、Steam が提供していないいくつかの機能も実装したいと思います。
ユーザーが初めてWebサイトにアクセスしてログインしようとすると、Steam OpenID機能を使用してユーザー情報を取得します(IDはopenIDでのみ渡され、残りの情報はAPIを介して取得できます)が、最初にユーザーを確認する必要があります他のサイト機能を有効にして、ユーザーを確認するために、アカウントに 20 以上のゲームがあるかどうかを確認する必要があります。彼が 20 以上のゲームを持っている場合、ウェブサイトを引き続き使用しても問題ありません。十分な数のゲームを持っていない場合は、十分な数のゲームがあればログインを続行できるという通知を投稿します。
ユーザーがログインして確認されたら、コメント、ポイント、その他のアクティビティのカウントなど、Web サイトの機能にユーザーを接続できるように、データベースにデータを挿入する必要があります。
そして最後に、彼がログインすると、Cookieを介して彼を覚えています(セッションはありますが、ブラウザーが閉じられるまで有効であることはわかっています)。
私はいくつかのことを行う方法を知っていますが、面倒なことに、誰かが私を指摘して、これの少なくとも半分を達成する方法を少し助けてくれれば、とても感謝しています.
これまでのところ、私が持っているコードはこれです。
function login() {
$openid = new LightOpenID(SITEURL);
if(!$openid->mode) {
if(isset($_GET['go']) && $_GET['go'] == 'login' ) {
$openid->identity = 'http://steamcommunity.com/openid';
header('Location: ' . $openid->authUrl());
}
if(!isset($_SESSION['RaffleSteamAuth'])) {
echo '<li><a href="?go=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.';
}
elseif(!isset($_SESSION['RaffleSteamAuth'])) {
$_SESSION['RaffleSteamAuth'] = $openid->validate() ? $openid->identity : null;
$_SESSION['RaffleSteamID64'] = str_replace('http://steamcommunity.com/openid/id/', '',$_SESSION['RaffleSteamAuth']);
if($_SESSION['RaffleSteamAuth'] != null) {
$steam64 = str_replace('http://steamcommunity.com/openid/id/', '', $_SESSION['RaffleSteamAuth']);
$profile = file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . APIKEY . '&steamids=' . $steam64);
$buffer = fopen('cache/' . $steam64 . '.json', 'w+');
fwrite($buffer, $profile);
fclose($buffer);
}
header('Location: ' . SITEURL);
}
if(isset($_SESSION['RaffleSteamAuth'])) {
$steam = json_decode(file_get_contents('cache/' . $_SESSION['RaffleSteamID64'] . '.json'));
echo '<li class="dropdown">';
echo '<a href="#" class="dropdown-toggle" data-toggle="dropdown"><img src="' . $steam->response->players[0]->avatar . '"/> ' . $steam->response->players[0]->personaname .'<b class="caret"></b></a>';
echo '<ul class="dropdown-menu">';
echo '<li><a href="?go=logout">Logout</a></li>';
echo '</ul>';
echo '</li>';
}
if(isset($_GET['go']) && $_GET['go'] == 'logout' ){
unset($_SESSION['RaffleSteamAuth']);
unset($_SESSION['RaffleSteamID64']);
header('Location: ' . SITEURL);
}
}