Авторизация через Steam

PHP скрипт для авторизации пользователей на сайте через аккаунт Steam с помощью API.

Для начала Вам нужно получить ключ Steam Web API. Зарегистрировать ключ Steam Web API можно по этой ссылке. Обратите внимание, что для получения доступа к регистрации ключа — необходимо пополнить баланс Steam аккаунта на 5$.

В официальной документации по API сказано, что авторизацию можно реализовать с помощью стандарта OpenID. Для облегчения задачи скачиваем готовую библиотеку https://github.com/iignatov/LightOpenID/blob/master/openid.php.

Теперь пишем сам скрипт получения данных о пользователе на php:

<?php
require '/lightopenid/openid.php';

$steamkey = 'Ваш Steam Key';
$script = 'http://ваш.сайт/этот.скрипт';

try {
    $openid = new LightOpenID($script);
    if(!$openid->mode) {
        $openid->identity = 'http://steamcommunity.com/openid/?l=russian';
        header('location: '.$openid->authUrl());
    } elseif ($openid->mode == 'cancel') {
        echo 'User has canceled authentication';
    } else {
        if($openid->validate()) {
            $id = $openid->identity;
            $ptn = "/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/";
            preg_match($ptn, $id, $matches);

            $url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=$steamkey&steamids=$matches[1]";
            $json_object = file_get_contents($url);
            $json_decoded = json_decode($json_object);

            foreach ($json_decoded->response->players as $player) {
                echo '<img src="'.$player->avatarmedium.'"> <a href="'.$player->profileurl.'">'.htmlspecialchars($player->personaname).'</a><hr><pre>';
                var_dump($player);
                echo '</pre>';
            }
        } else {
        echo 'User is not logged in.';
        }
    }
} catch(ErrorException $e) {
    echo $e->getMessage();
}

?>

На главную