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

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

09.03.2014, 23:37. Показов 75815. Ответов 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
Cdzn
12.07.2014, 00:06
Как встроить в instant CMS v2? Помогите пожалуйста с этим
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 9
26.09.2014, 03:48
помогите пожалуйста ! после авторизации почему то выводит только : "User is logged in (steamID: $matches[1])
у меня User is logged in (steamID: 76561198097293790)
и больше не чего ,то есть игнорирует вывод значений с json файла!


Я пробовал через xml выводить так же не дало результата

Добавлено через 46 секунд
TheMoren,

в чем проблема возможна?
0
0 / 0 / 0
Регистрация: 03.06.2009
Сообщений: 89
29.09.2014, 20:00
Аналогичная ситуация как и товарища с постом выше.
Значения не выводятся, помогите, если нужна какая-то информация, то скажите что....
0
4 / 4 / 0
Регистрация: 09.03.2014
Сообщений: 20
25.10.2014, 11:36  [ТС]
Как встроить в различные CMS не знаю !
Цитата Сообщение от makar4eg Посмотреть сообщение
User is logged in (steamID: $matches[1]
Возможно проблема в SteamAPIKey ! Его нужно указать в файле "steam_auth.php"
$_STEAMAPI = "ВАШ_КЛЮЧ";
Получить его можно здесь ! Внизу ссылка "Go to Registration page"
0
0 / 0 / 0
Регистрация: 26.09.2014
Сообщений: 9
04.11.2014, 01:44
нет, к сожелению не в этом проблема
ключ указывал
0
0 / 0 / 1
Регистрация: 05.11.2014
Сообщений: 24
05.11.2014, 20:58
Все сделал по инструкции. В итоге получил
HTML5
1
Warning: include() [function.include]: Failed opening '/steam_auth.php' for inclusion (include_path='.:/opt/php-5.3/pear') in /home/u384931899/public_html/steam.php on line 20
Как бороться?
0
0 / 0 / 0
Регистрация: 08.11.2014
Сообщений: 3
08.11.2014, 02:39
У тебя проблема в том что тебе нужно прописать полный путь к файлу вместе с корнем "/home/u384931899/public_html"!

Добавлено через 1 минуту
Та же проблема что и у других, не хочет обрабатывать запрос "foreach ($json_decoded->response->players as $player)". Пишет только что залогинился и id. Больше ничего
0
4 / 4 / 0
Регистрация: 09.03.2014
Сообщений: 20
08.11.2014, 08:16  [ТС]
Стало интересно что там у вас "не работает".. предполагал что код не уже рабочий..
НО оказалось что всё отлично работает !
Прикрепил скриншот.

По сути нужно создать 3 файла и добавить в них готовый код а у вас ошибки
Проверяйте файл "steam_auth.php" и пути к файлам..
Что проверять в steam_auth.php ?

$_STEAMAPI = "ВАШ SteamAPIKey"; - полученный здесь.
$openid = new LightOpenID('http://Ссылка на ваш сайт/');

Ну и не исключаю различные проблемы с хостингом или CMS..
Миниатюры
Авторизация через Steam API  
0
0 / 0 / 1
Регистрация: 05.11.2014
Сообщений: 24
08.11.2014, 21:21
Цитата Сообщение от Hotboy Посмотреть сообщение
У тебя проблема в том что тебе нужно прописать полный путь к файлу вместе с корнем "/home/u384931899/public_html"!

Добавлено через 1 минуту
Та же проблема что и у других, не хочет обрабатывать запрос "foreach ($json_decoded->response->players as $player)". Пишет только что залогинился и id. Больше ничего
Спасибо, помогли!


Теперь такая-же ошибка как и у всех.

Пробовал вместо
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 $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'/> 
                    ";
                }
Ставить этот код
PHP
1
2
3
4
$inname = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=*цензура*&steamids=*ценузра*";
$inname1 = json_decode(file_get_contents($inname));
$test1 = $inname1->response->players[0]->lastlogoff;
echo $test1."оно вообще что-то выводит?";
0 на массу.
0
4 / 4 / 0
Регистрация: 09.03.2014
Сообщений: 20
09.11.2014, 00:05  [ТС]
Есть кто нибудь у кого на локалхосте такая ошибка ? (XAMPP)
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
12.11.2014, 22:36
Цитата Сообщение от TheMoren Посмотреть сообщение
Вам останется сделать добавление данных о авторизированных пользователей в MySQL и добавление данных в сессию авторизированного пользователя.
Без этого полученные данные выводить не будет?
Во всяком случае у меня глухо.
0
4 / 4 / 0
Регистрация: 09.03.2014
Сообщений: 20
13.11.2014, 09:50  [ТС]
И без добавления данных должно выводить !
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
13.11.2014, 19:06
Цитата Сообщение от TheMoren Посмотреть сообщение
И без добавления данных должно выводить !
Ничего не выводит как и у всех в этой теме. работает только до этой строчки:
PHP
1
echo "User is logged in (steamID: $matches[1])\n";
вот как-то так.

Method Not Allowed
This API must be called with a HTTP GET request
0
4 / 4 / 0
Регистрация: 09.03.2014
Сообщений: 20
13.11.2014, 19:14  [ТС]
Если есть человек который может нормально объяснить как он всё подключает, где использует данный скрипт (localhost, хостинг) и т.д. То я наверно смогу помочь..
P.S. Лично проверял, всё работает ! Скрин выше.
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
13.11.2014, 19:29
Цитата Сообщение от TheMoren Посмотреть сообщение
Если есть человек который может нормально объяснить как он всё подключает, где использует данный скрипт (localhost, хостинг) и т.д. То я наверно смогу помочь..
P.S. Лично проверял, всё работает ! Скрин выше.
Зачем оно всем на локалхосте? У меня все заработало, но я переделал через curl, чего и всем советую.
0
4 / 4 / 0
Регистрация: 09.03.2014
Сообщений: 20
13.11.2014, 20:41  [ТС]
Всё и без CURL отлично работает ! И советы криворуких людей в теме не нужны.
А на localhoste для того что-бы проверить кто нибудь из вас способен подключить 3 файла или нет..
P.S. Если вы ловко обращаетесь с PHP и cURL, писали бы полностью всё с нуля для себя.. а не искали бы и не переписывали чужой скрипт!
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
02.02.2015, 05:25
Почему у меня возмущается?!
Warning: Invalid argument supplied for foreach() in **/lightopenid/steam_auth.php on line 39
0
0 / 0 / 0
Регистрация: 23.01.2015
Сообщений: 3
07.02.2015, 20:19
Возникает ошибка 504 Gateway Time-out, причем очень часто, и только при выполнении данного скрипта.
Что можно сделать?
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
08.02.2015, 06:24
Цитата Сообщение от dPrimo Посмотреть сообщение
Возникает ошибка 504 Gateway Time-out, причем очень часто, и только при выполнении данного скрипта.
Что можно сделать?
На LocalHost такого не должно быть.
На Hostinger вообще 502 выскакивает. Так что спроси хост.
И проверь версию PHP. На 5.3+ Работает норм.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2015, 06:24
Помогаю со студенческими работами здесь

Авторизация через 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
Здравствуйте!Для общего развития решил сделать сайт,поставить авторизацию через стим по данной статье...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru