4 / 4 / 0
Регистрация: 09.03.2014
Сообщений: 20

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

09.03.2014, 23:37. Показов 76229. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаем авторизацию с помощью Steam API (OpenID)

1. Создаем в директории сайта папку "lightopenid" и в этой папке создаем файл "openid.php" c данным кодом.

2. Создаем в директории сайта файл "steam_auth.php" и в него добавляем код.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
require '/lightopenid/openid.php';
$_STEAMAPI = "SteamAPIKey";
try 
{
    $openid = new LightOpenID('http://Ссылка для перехода после авторизации/');
    if(!$openid->mode) 
    {
        if(isset($_GET['login'])) 
        {
            $openid->identity = 'http://steamcommunity.com/openid/?l=english'; 
            header('Location: ' . $openid->authUrl());
        }
?>
<form action="?login" method="post">
    <input type="image" src="http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_small.png">
</form>
<?php
    } 
    elseif($openid->mode == 'cancel') 
    {
        echo 'User has canceled authentication!';
    } 
    else 
    {
        if($openid->validate()) 
        {
                $id = $openid->identity;
                // identity is something like: http://steamcommunity.com/openid/id/76561197960435530
                // we only care about the unique account ID at the end of the URL.
                $ptn = "/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/";
                preg_match($ptn, $id, $matches);
                echo "User is logged in (steamID: $matches[1])\n";
 
                $url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=$_STEAMAPI&steamids=$matches[1]";
                $json_object= file_get_contents($url);
                $json_decoded = json_decode($json_object);
 
                foreach ($json_decoded->response->players as $player)
                {
                    echo "
                    <br/>Player ID: $player->steamid
                    <br/>Player Name: $player->personaname
                    <br/>Profile URL: $player->profileurl
                    <br/>SmallAvatar: <img src='$player->avatar'/> 
                    <br/>MediumAvatar: <img src='$player->avatarmedium'/> 
                    <br/>LargeAvatar: <img src='$player->avatarfull'/> 
                    ";
                }
 
        } 
        else 
        {
                echo "User is not logged in.\n";
        }
    }
} 
catch(ErrorException $e) 
{
    echo $e->getMessage();
}
?>
3. Подключаем этот файл с помощью (include "/steam_auth.php") в том месте где должа быть кнопка авторизации Steam ну или просто добавляем код.

Данный код будет выводить Steam данные на странице:

Player ID - "$player->steamid"
Player Name - "$player->personaname"
Profile URL - "$player->profileurl"
SmallAvatar - "$player->avatar"
MediumAvatar - "$player->avatarmedium"
LargeAvatar - "$player->avatarfull"

Список данных которые можно получить.

Вам останется сделать добавление данных о авторизированных пользователей в MySQL и добавление данных в сессию авторизированного пользователя.

Не забудьте указать ваш "SteamAPIKey" и ссылку для переадресации после авторизации.
4
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.03.2014, 23:37
Ответы с готовыми решениями:

Авторизация через Steam API
Добрый день, столкнулся со странной проблемой: Имею два сайта с одинаковым &quot;движком&quot; (самописный скрипт), с первого сайта залил на...

Steam API - как можно получить медиану цен через API?
Ребят, как можно получить медиану цен через API ? Интересует количество продаж за последний день. Инфу по предмету получаю таким...

Авторизация через steam
привет . Кто понимает как работает OpenId помогите решить проблему . у меня есть код &lt;?php include &quot;apikey.php&quot;; ...

46
0 / 0 / 0
Регистрация: 23.01.2015
Сообщений: 3
08.02.2015, 17:44
Студворк — интернет-сервис помощи студентам
Natsu_Zirok, если всё-таки проблема в хостинге, есть ли варианты, какой лучше использовать?

Добавлено через 1 час 15 минут
Natsu_Zirok,

PHP
1
2
3
4
5
6
7
8
    require '/lightopenid/openid.php';
    $_STEAMAPI = "";
    
    $response = file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . $_STEAMAPI . '&steamids=' . $_SESSION['comid']); 
    $json = json_decode($response, true); 
        
    $Getted[1] = $json['response']['players']['0']['avatarfull'];
    $Getted[2] = $json['response']['players']['0']['personaname'];
Это решение твоей проблемы.
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
08.02.2015, 21:08
Цитата Сообщение от dPrimo Посмотреть сообщение
Natsu_Zirok, если всё-таки проблема в хостинге, есть ли варианты, какой лучше использовать?
1.Платный(На Hostinger - 200 руб месяц + домен(Не помню какой. То ли .ru, то ли все)
2.Сменить бесплатный.

Добавлено через 1 минуту
Цитата Сообщение от dPrimo Посмотреть сообщение
Это решение твоей проблемы.
Это второе решение. А так, я уже нашел. Просто, вместо обычного file_get_contents($url); поставил cUrl'овское
0
13 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 27
15.03.2015, 20:20
Ребята, я настроил вход, все работает. Но у меня вопрос главный!!

Как получить account_id игры пользователя стим, в частности dota 2????
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
15.03.2015, 22:18
Цитата Сообщение от feeltaste Посмотреть сообщение
Как получить account_id игры пользователя стим, в частности dota 2????
https://developer.valvesoftwar... am_Web_API
0
13 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 27
15.03.2015, 22:28
Не могли бы вы указать более точно раздел, в котором содержится информация по моему вопросу? Потому-что я облазил там все, и не нашел что мне нужно.
Максимум, если такая информация содержится в GetPlayerSummaries (v0002) в Private Data, тогда конечно мне нужно разобраться как получить эти приватные данные, иначе, информацию, как найти именно account_id я не нашел(
0
0 / 0 / 0
Регистрация: 23.01.2015
Сообщений: 3
16.03.2015, 04:00
PHP
1
2
3
4
    $Y = $matches[1] % 2; //Parity bit at end of 64-bit ID
    $Z = gmp_and($matches[1], "0xFFFFFFFF"); //Get the Account ID
    $Z = gmp_strval(gmp_div($Z, 2));
    $psteam = "STEAM_1:{$Y}:{$Z}";
0
13 / 0 / 0
Регистрация: 22.04.2014
Сообщений: 27
16.03.2015, 20:02
С таким кодом так же разобрался, однако это не совсем то что мне нужно. Мне нужен account_id для запроса https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?matches_requested=1&key=XXXXXXXXXXXXXXX XXXXXXXXXX&account_id=$acc

$acc в свою очередь можно найти в самой игре, скрин выслал
Изображения
 
0
0 / 0 / 1
Регистрация: 25.11.2014
Сообщений: 7
22.04.2015, 11:39
Ребят, мне нужно загрузить инвентарь пользователя на сайт, аватар(Большой) и ник. Как это сделать?
Заранее огромное спасибо! После этого эти данные будут записаны в БД и обновляются только при следующем входе по нажатии кнопки "Обновить". Ну, как сделать перезапись в БД я знаю, но не знаю как загрузить инвентарь пользователя(Нужно именно CS:GO).
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
22.04.2015, 19:32
Цитата Сообщение от ЕвгенийПонятовс Посмотреть сообщение
Ребят, мне нужно загрузить инвентарь пользователя на сайт, аватар(Большой) и ник. Как это сделать?
Заранее огромное спасибо! После этого эти данные будут записаны в БД и обновляются только при следующем входе по нажатии кнопки "Обновить". Ну, как сделать перезапись в БД я знаю, но не знаю как загрузить инвентарь пользователя(Нужно именно CS:GO).
PHP
1
2
$player->avatarfull //полный аватар
$player->personaname //текущий ник
А для инвентаря я не знаю. Скорее всего через бота или сделать условие: если инвентарь доступен для просмотра - через cUrl(Не знаю как), а если не доступен, писать: Ваш инвентарь закрыт настройками приватности.
0
0 / 0 / 1
Регистрация: 25.11.2014
Сообщений: 7
23.04.2015, 17:49
Не срабатывает кнопка - что делать? Нажимаю на кнопку, а оно никуда не переходит и ничего не пишет.

Добавлено через 5 часов 48 минут
Invalid argument supplied for foreach() in /home/u356709193/public_html/steam_auth.php on line 38
Еслю юзать твой код. Но вот этот код срабатывает:
ОЧЕНЬ СРОЧНО! Скоро открытие сайта и только эта функция не работает.
PHP
1
2
3
4
5
6
7
8
9
10
<?php
header('Content-Type: text/html; charset=utf-8');
$json = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamids=76561198169480148");
 
$obj = json_decode($json);
$xas=$obj->response;
foreach($xas->players as $player) {
    echo $player->profileurl;
}
?>
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
23.04.2015, 18:05
Цитата Сообщение от ЕвгенийПонятовс Посмотреть сообщение
Invalid argument supplied for foreach() in /home/u356709193/public_html/steam_auth.php on line 38
Еслю юзать твой код. Но вот этот код срабатывает:
ОЧЕНЬ СРОЧНО! Скоро открытие сайта и только эта функция не работает.

PHP
1
2
3
4
5
6
7
8
9
<?php
header('Content-Type: text/html; charset=utf-8');
$json = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&steamids=76561198169480148");
$obj = json_decode($json);
$xas=$obj->response;
foreach($xas->players as $player) {
* * echo $player->profileurl;
}
?>
Попробуй, вместо file_get_contents -> cUrl версию.
0
0 / 0 / 1
Регистрация: 25.11.2014
Сообщений: 7
23.04.2015, 18:58
Можешь написать curl версию?

Добавлено через 24 минуты
Сам сделал. Всё работает. Спасибо.
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
29.04.2015, 20:19
ЕвгенийПонятовс, чем тебе помочь?(Ты написал мне в скайпе)
0
0 / 0 / 1
Регистрация: 15.11.2013
Сообщений: 84
30.04.2015, 20:30
Error - Endless redirection!
Что делать ?
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
18.05.2015, 00:23
Сделал так как написано выше. Пишет ошибку
Endless redirection!
Как исправить?
вот ссылка на кнопку http://test.kselax.ru/steam_auth.php
0
F57
 Аватар для F57
68 / 68 / 23
Регистрация: 17.02.2015
Сообщений: 397
18.05.2015, 04:08
Endless redirection
У тебя редирект на редирект.
0
0 / 0 / 0
Регистрация: 21.06.2015
Сообщений: 2
21.06.2015, 21:15
Ребята.Помгите.
Сделал пункт 1,2.
3 пункт - создал html файл с строчкой include "/steam_auth.php" (все это дело делаю на hostinger`у)
нихрена не фурычит. выдает только текст.
Объясните чайнику.
Заранее спасибо.
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
22.06.2015, 08:12
Цитата Сообщение от Zeus34409 Посмотреть сообщение
3 пункт - создал html файл с строчкой include "/steam_auth.php" (все это дело делаю на hostinger`у)
Цитата Сообщение от Zeus34409 Посмотреть сообщение
Объясните чайнику.
Правильно сделал, что обратился к нам. Надо было не .html, а .php файл создавать.
Совет - изучи основы PHP, что бы глупых ошибок не было.
0
0 / 0 / 0
Регистрация: 21.06.2015
Сообщений: 2
22.06.2015, 17:33
Спасибо.
Надо бы подучить это дело .
0
0 / 0 / 0
Регистрация: 27.03.2015
Сообщений: 2
27.06.2015, 20:27
Нажимаю на кнопку, обновляется страница и всё, в чём может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.06.2015, 20:27
Помогаю со студенческими работами здесь

Авторизация через steam openID
При попытке авторизоваться на сайте через steam, выдает вот такую ошибку Warning: Cannot modify header information - headers already sent...

Не логинится через steam web api
Здравствуйте. Делаю рулетку для cs go (взял паблик исход), подключил БД и указал API key в настройках, при заходе адрес указывается куда...

Получить account_id dota 2 через steam api
Добрый день всем. Разобрался как делать авторизацию через стим апи. Разобрался как делать всякие разные вопросы, Но. Мне нужно получить...

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

Steam и Api
Здравствуйте!Для общего развития решил сделать сайт,поставить авторизацию через стим по данной статье...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru