<?php
session_start();
try {
// https://github.com/iignatov/LightOpenID
require 'openid.php';
$openid = new LightOpenID($_SERVER['SERVER_NAME']);
if (!$openid->mode) {
$openid->identity = 'https://steamcommunity.com/openid';
header('Location: ' . $openid->authUrl());
} else if ($openid->validate()) {
$steamid = $openid->identity;
$ptn = '/\d{17}/';
preg_match($ptn, $steamid, $matches);
$_SESSION['steamid'] = $matches[0];
header('Location: https://' . $_SERVER['SERVER_NAME']);
}
} catch (Exception $error) {
echo $error;
}
?>
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/lib/openid.php"); // location openId steam library
$_STEAMAPI = "__________"; // steam api key
try
{
$openid = new LightOpenID('https://example.ru/steam_auth.php'); // путь до файла авторизации
if(!$openid->mode)
{
$openid->identity = 'http://steamcommunity.com/openid/?l=russian';
redirect($openid->authUrl());
}
if($openid->validate())
{
$id = $openid->identity;
$ptn = "/^https:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/";
preg_match($ptn, $id, $matches);
$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)
{
/*
# $player->steamid - steamid user
# $player->personaname - name profile steam
# $player->avatarfull - url userpick profile steam
*/
}
}
else
{
echo "User is not logged in.\n";
}
}
catch(ErrorException $e)
{
echo $e->getMessage();
}
?>
Там очень много строчек кода, не думаю, чтобы получить Steam ID, ник, аватарку и т.д. нужно несколько сотен
Ну вот уже что-то похожее на правду, спасибо@Temlik,
GitHub - iignatov/LightOpenID: Lightweight PHP5 library for easy OpenID authentication.
PHP:<?php include_once($_SERVER['DOCUMENT_ROOT']."/lib/openid.php"); // location openId steam library $_STEAMAPI = "__________"; // steam api key try { $openid = new LightOpenID('https://example.ru/steam_auth.php'); // путь до файла авторизации if(!$openid->mode) { $openid->identity = 'http://steamcommunity.com/openid/?l=russian'; redirect($openid->authUrl()); } if($openid->validate()) { $id = $openid->identity; $ptn = "/^https:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/"; preg_match($ptn, $id, $matches); $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) { /* # $player->steamid - steamid user # $player->personaname - name profile steam # $player->avatarfull - url userpick profile steam */ } } else { echo "User is not logged in.\n"; } } catch(ErrorException $e) { echo $e->getMessage(); } ?>
либу подкрепил в архив, можешь с гита скачать LightOpenID/openid.php at master · iignatov/LightOpenID
Там очень много строчек кода, не думаю, чтобы получить Steam ID, ник, аватарку и т.д. нужно несколько сотен
$url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=STEAM_API_KEY&steamids=STEAMID64";
$json_object = file_get_contents($url);
$json_decoded = json_decode($json_object);
foreach ($json_decoded->response->players as $player)
{
/*
# $player->steamid - steamid user
# $player->personaname - name profile steam
# $player->avatarfull - url userpick profile steam
*/
}
Смотря что ты пытаешься сделать и как.Чё то вообще ничего не работает
И как конвертировать Steam ID в Steam ID 64?@Temlik, использовать API-Steam, так-же нужно своими средствами конвертировать SteamID в SteamID64
Steam Web API - Valve Developer Community
developer.valvesoftware.com
PHP:$url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=STEAM_API_KEY&steamids=STEAMID64"; $json_object = file_get_contents($url); $json_decoded = json_decode($json_object); foreach ($json_decoded->response->players as $player) { /* # $player->steamid - steamid user # $player->personaname - name profile steam # $player->avatarfull - url userpick profile steam */ }
Смотря что ты пытаешься сделать и как.
Это банальная математика.И как конвертировать Steam ID в Steam ID 64?
STEAM_X:Y:ZX ни на что не влияет, оно от игры зависитY - сервер аутентификации (как все предполагают), и их всего два (0 и 1 соответственно)Z - идентификатор аккаунта на сервере76561197960265728 + ((Z * 2) + Y)76561197960265728 - константа. Ниже этого числа нет никаких аккаунтов, как и на нём самом.STEAM_0:1:0 или 76561197960265729 (ссылка).<?php
// Требуется расширение GMP.
$steamId = 'STEAM_0:0:55665612';
$baseCommunityId = '76561197960265728';
$parts = explode(':', $steamId);
$steamY = intval($parts[1]);
$steamZ = intval($parts[2]);
$communityId = gmp_strval(gmp_add($baseCommunityId, ($steamZ * 2) + $steamY));
echo($communityId); // Должно вывести 76561198071596952
А, точнякДобавить просто Community ID к ссылкеhttps://steamcommunity.com/profiles/уже не подходит?
В 1 слишком много кода (я его представлял как @Kruzya написал), а во 2 я не знаю что дальше делать, поэтому и написал@Temlik, я тебе уже два примера скинул на реализацию, CTRL C / CTRL V что не работает то?
В смысле слишком много кода, то что заявлено в теме "Steam авторизация" то я тебе и помог сделать, это авторизация стима - а то что ты костыли какие-то придумываешь, это конечно твое дело уже.1 слишком много кода
$url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=STEAM_API_KEY&steamids=799966666621212";
$json_object = file_get_contents($url);
$json_decoded = json_decode($json_object);
foreach ($json_decoded->response->players as $player)
{
echo $player->steamid; // отобразим на сайте STEAMID64
echo $player->personaname; // отобразим на сайте Ник
echo $player->profileurl; // отобразим на сайте ссылку на профиль
echo $player->avatarfull; // отобразим на сайте ссылку на аватар
echo $player->personastate; // отобразим на сайте статус в стиме
}
Я же написал, что потом разберусь. И попросил сказать как узнать ссылку на профиль и аватар по Steam IDВ смысле слишком много кода, то что заявлено в теме "Steam авторизация" то я тебе и помог сделать, это авторизация стима - а то что ты костыли какие-то придумываешь, это конечно твое дело уже.
Во втором примере это вообще тот конечно еще костыль, но тебе же надо без дополнительных биб.
То что тебе @Kruzya дал это никак не относится к понятию "стим-авторизации", это лишь пример реализации конвертации стим-айди по формуле.
Результат выполнения:PHP:$url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=STEAM_API_KEY&steamids=799966666621212"; $json_object = file_get_contents($url); $json_decoded = json_decode($json_object); foreach ($json_decoded->response->players as $player) { echo $player->steamid; // отобразим на сайте STEAMID64 echo $player->personaname; // отобразим на сайте Ник echo $player->profileurl; // отобразим на сайте ссылку на профиль echo $player->avatarfull; // отобразим на сайте ссылку на аватар echo $player->personastate; // отобразим на сайте статус в стиме }
Посмотреть вложение 84896
более подробнее сюда Steam Web API - Valve Developer Community
Ты бы написал сразу чего хочешь добиться, а не ходил во круг да около.
<?php
$json_object = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=69C2A61F607FA67C79D51F80AAFD7726&steamids=76561199063318121");
$json_decoded = json_decode($json_object, true);
echo "Result: ".$json_decoded['response']['players'][0]['steamid'];
?>
Я же написал, что потом разберусь
а во 2 я не знаю что дальше делать, поэтому и написал
Что-то у меня 5 сек. страница грузится. Может из-за того, что на локалке? На хосте норм всё будет?@Temlik, упрощенный вариант, то о чем тебе @Kruzya написал
PHP:<?php $json_object = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=69C2A61F607FA67C79D51F80AAFD7726&steamids=76561199063318121"); $json_decoded = json_decode($json_object, true); echo "Result: ".$json_decoded['response']['players'][0]['steamid']; ?>
![]()