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

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

09.03.2014, 23:37. Показов 76001. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru