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

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

09.03.2014, 23:37. Показов 75798. Ответов 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 / 1
Регистрация: 07.06.2015
Сообщений: 51
30.06.2015, 10:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ЕвгенийПонятовс Посмотреть сообщение
Можешь написать curl версию?

Добавлено через 24 минуты
Сам сделал. Всё работает. Спасибо.
Можно cURL версию?)

Добавлено через 12 минут
Просморите, пожалуйста, похожую тему на форуме (от мен). Прошу помощи, спасибо:
Авторизация через Steam API
0
0 / 0 / 0
Регистрация: 20.03.2015
Сообщений: 2
19.07.2015, 22:16
Ребят, у кого остался файлик openid.php с первого поста? А то ссылка на код который нужно в него вписать - не работает

Добавлено через 29 минут
Нашел, на всякий дам ссылку, вдруг кому понадобится этот LightOpenID

https://github.com/iignatov/Li... openid.php
0
0 / 0 / 0
Регистрация: 25.03.2016
Сообщений: 3
05.04.2016, 12:14
Попробуй, вместо file_get_contents -> cUrl версию.
Помогите написать curl версию?

Добавлено через 1 час 25 минут
ребят, помогите пожалуйста. При нажатии на кнопку ни чего не происходит, что не так ?
вот код контроллера:
PHP
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
63
64
65
public function actionLogin_steam1()
        {
            $this->enableCsrfValidation = false;
            function file_get_contents_curl($url) 
    {
    $ch = curl_init();
 
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Устанавливаем параметр, чтобы curl возвращал данные, вместо того, чтобы выводить их в браузер.
    curl_setopt($ch, CURLOPT_URL, $url);
 
    $data = curl_exec($ch);
    curl_close($ch);
 
    return $data;
    }
    
            
            $_STEAMAPI = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
            try 
            {
            $openid = new LightOpenID('http://yii2/site/login_steam1');
            if(!$openid->mode) 
            {
                if(isset($_GET['login'])) 
                {
                    $openid->identity = 'http://steamcommunity.com/openid/?l=english'; 
                    header('Location: ' . $openid->authUrl());
                }
            }
             elseif($openid->mode == 'cancel') 
            {
                echo 'User has canceled authentication!';
            } 
            else 
            {
                if($openid->validate()) 
                {
                        $id = $openid->identity;
                        // identity is something like: [url]http://steamcommunity.com/openid/id/76561197960435530[/url]
                        // 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_curl($url);
                        $json_decoded = json_decode($json_object);
         
                        
                } 
                else 
                {
                 echo "User is not logged in.\n";
                }
            }
        }    
            catch(ErrorException $e) 
            {
            echo $e->getMessage();
            }   
            
            return $this->render('login_steam1',['$json'=>$json_decoded]);
            
        }
а вот вью:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form action="login_steam1" method="POST">
    <input type="image" src="http://steamcommunity-a.akamaihd.net/public/images/signinthroughsteam/sits_large_border.png">
    <input type="hidden" name="_csrf" value="<?=Yii::$app->request->getCsrfToken()?>" />
    </form>
 
 
 
   <?php if($json) foreach ($json->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'/> 
                ";
        }       
         endforeach 
        ?>
Добавлено через 4 часа 27 минут
мне кто нить поможет?
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
05.04.2016, 13:05
Цитата Сообщение от ctrlalt Посмотреть сообщение
Помогите написать curl версию?
PHP
1
2
3
4
5
6
7
8
9
10
11
function url_get_contents ($Url) {
    if (!function_exists('curl_init')){ 
        die('CURL is not installed!');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}
0
0 / 0 / 0
Регистрация: 25.03.2016
Сообщений: 3
06.04.2016, 07:20
Кстати, все это в yii2

Добавлено через 17 часов 12 минут
Помогите)
0
0 / 0 / 0
Регистрация: 28.03.2017
Сообщений: 2
28.03.2017, 19:49
Помогите, не могу понять что ему не нравится.
Warning: Cannot modify header information - headers already sent by (output started at D:\OpenServer\domains\MatchGrad\index.ht ml:18) in D:\OpenServer\domains\MatchGrad\lightope nid\steam_auth.php on line 12
Перевод

Предупреждение : Не удается изменить информацию в заголовке - заголовки уже прислал (выход начался в D: \ OpenServer \ домены \ MatchGrad \ index.html: 18) в D: \ OpenServer \ домены \ MatchGrad \ lightopenid \ steam_auth.php на линии 12
0
 Аватар для Natsu_Zirok
-1 / 0 / 3
Регистрация: 14.10.2013
Сообщений: 156
29.03.2017, 13:32
Здесь все просто - заголовки. steam_auth.php отправляет заголовки, которые не могут быть изменены, если отправлено тело. Либо работай через ob_start(), либо steam_auth.php у тебя странно работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2017, 13:32
Помогаю со студенческими работами здесь

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


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

Или воспользуйтесь поиском по форуму:
47
Ответ Создать тему
Новые блоги и статьи
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