В данном посте представлены некоторые куски кода для элементарной работы со STEAM API на языке PHP. В частности рассматриваются вопросы импорта и экспорта вещей из STEAM и обратно, а также процесс обмена.
Авторизация у себя на сайте через STEAM профиль
Данная процедура дает возможность авторизироваться пользователям на сайте через данные, зарегистрированные на STEAM. Для этого нам , в первую очередь нужно заполучить ApiKey и далее через PHP код отправить запрос на получение. Сгенерировать ApiKey это можно через страницу разработчиков STEAM. Выглядит все это так
Надо будет указать адрес сайта, где требуется авторизация и увас должны быть купленные суммы на опредленную сумму, чтобы STEAM понимал вашу серьезность с ними честно работать, иначе он вам не даст генерировать ключ.
При создании авторизации необходимо позаботиться о 2-х вещах:
- нужна кнопка со ссылкой передачи по GET- запросу ключа данных для авторизации;
- нужна страница, которая получит данные после возврата со STEAM для последующей обработки у нас на сайте.
Давайте сначала передадим данные пользователя через GET по ссылке по нажатию на кнопку авторизации через STEAM
//Общие данные для авторизации $steam=array( 'key'=>'AAA862C800301CC07DA5D3D6095E8DAA', 'redirect'=>'http://test.wsofter.com/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;'>"; }