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();
}
?>