Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.79/392: Рейтинг темы: голосов - 392, средняя оценка - 4.79
4 / 4 / 0
Регистрация: 09.03.2014
Сообщений: 20

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

09.03.2014, 23:37. Показов 76195. Ответов 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
Ответ Создать тему
Новые блоги и статьи
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru