Некоторые снипеты PHP для работы со STEAM API

В данном посте представлены некоторые куски кода для элементарной работы со STEAM API на языке PHP. В частности рассматриваются вопросы импорта и экспорта вещей из STEAM и обратно, а также процесс обмена.

Авторизация у себя на сайте через STEAM профиль

Данная процедура дает возможность авторизироваться пользователям на сайте через данные, зарегистрированные на STEAM. Для этого нам , в первую очередь нужно заполучить ApiKey и далее через PHP код отправить запрос на получение. Сгенерировать ApiKey это можно через страницу разработчиков STEAM. Выглядит все это так

Надо будет указать адрес сайта, где требуется авторизация и увас должны быть купленные суммы на опредленную сумму, чтобы STEAM понимал вашу серьезность с ними честно работать, иначе он вам не даст генерировать ключ.

При создании авторизации необходимо позаботиться о 2-х вещах:

  • нужна кнопка со ссылкой передачи по GET- запросу ключа данных для авторизации;
  • нужна страница, которая получит данные после возврата со STEAM для последующей обработки у нас на сайте.

Давайте сначала передадим данные пользователя через GET по ссылке по нажатию на кнопку авторизации через STEAM

   //Общие данные для авторизации
    $steam=array(
        'key'=>'AAA862C800301CC07DA5D3D6095E8DAA',
        'redirect'=>'http://test.websofter.ru/mygamelogin/'
    );
    // Создание ссылки для аутентификации
    $steamHref="https://steamcommunity.com/openid/login?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=checkid_setup&openid.return_to=".urldecode($steam["redirect"])."%3Fstate=steam&openid.realm=".urldecode($steam["redirect"])."&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select"; 
    
    echo "<a href=".$steamHref.">";
        echo "Войти через STEAM";
    echo "</a>";

Теперь необходимо позаботиться о возвращенных данных авторизируемого пользователя. Мы будем перенаправлены на страницу, которая содержится в параметре массива $steam[«redirect»] и после редиректа все данные будут приняты через GET — ответ

    $userInfo = null;
    // Проверка, что данные не пусты
    if(isset($_GET["state"]) && $_GET["state"]=="steam") 
    { 
        // Вытаскиваем id юзера
        preg_match("/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/", $_GET["openid_identity"], $key);
        $key=$key[1];
	$userInfo = json_decode(file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=".$steam["key"]."&steamids=".$key)); // Получаем информацию о пользователе
	$userInfo=$userInfo->response->players[0]; // Переводим полученные данные в класс
    }
    //Выводим полученный массив с данными юзера, который хотел авторизироваться
    echo "<br/>id:".$userInfo->steamid."<br/>";
    print_r($userInfo);

 

Вывод вещей из инвентаря STEAM по ID игры

Допустим, есть задача вывести список вещей определенной игры из его инвентаря.  При просмотре ID игры добавляется в STEAM через http://steamcommunity.com/id/102177895/inventory/json/#gameid. Этот ID можно использовать для вывода данных в виде JSON — строки и обработав вывести весь инвентарь у себя на странице. Код ниже демонстрирует вывод вещей из CS:GO

$get_content = file_get_contents("http://steamcommunity.com/id/102177895/inventory/json/578080/2");
$data_image = (array) json_decode($get_content) -> rgInventory;
$count_content = count($data_image);
$data_content = (array) json_decode($get_content, TRUE);
echo "Total items: $count_content <br><br>";
for ($i=0; $i<$count_content; $i++) {
    $element_name = array_shift($data_content[rgInventory]);
    $name_item = "$element_name[classid]_$element_name[instanceid]";
    echo "<img src='http://steamcommunity-a.akamaihd.net/economy/image/";
    print_r($data_content['rgDescriptions'][$name_item]['icon_url']);
    echo "' style='width:90px; height:90px; float:left; margin: 5px; outline: 1px solid black;'>";
}