如何添加Steam OpenID登录并记住用户登录cookie到我的网站?

时间:2013-10-02 13:17:29

标签: php cookies openid registration steam

我正在尝试建立一个网站,用户可以通过Steam OpenID登录并在网站上做一些事情。

但我还想实现一些蒸汽不提供的功能:

如果用户第一次来到网站并尝试登录,他使用Steam OpenID功能来检索他的用户信息(id只传递给openID和我可以通过API获取的其他信息)但现在我需要验证用户首先启用其他网站功能,验证用户我需要检查他的帐户是否有超过20个游戏。如果他有超过20场比赛他可以继续使用网站,如果他没有足够的比赛发布通知,一旦他有足够的比赛,他可以继续登录。

当用户被加入并验证时,我需要将他的数据插入数据库,以便能够将他与我网站上的功能连接起来,例如计算评论,积分和其他活动。

最后一旦他通过cookie记住他(有会话,但我知道他们只有在浏览器关闭之前才有效)所以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);
}

}

0 个答案:

没有答案
相关问题