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

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

09.03.2014, 23:37. Показов 76215. Ответов 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
Ответ Создать тему
Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru