WebWost WebWostbeta

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

Авторизация через Steam - идеальное решение для игровых сайтов, сокращающий время на регистрацию в разы!

PHP

Al-Sher

Сегодня я решил поработать над авторизацией через Steam и немного помучавшись у меня вышло :)

Весь код можно найти тут.

Для начала нужно получить ваш Секретный ключ(Api key), который можно получить тут.

Теперь, как и в прошлый раз, я разберу весь код :)

Ну как обычно мы создаем массив для необходимых данных

$steam=array('key'=>'Секретный_ключ','redirect'=>'страница_редиректа');

Секретный_ключ дается вам стимом!

Теперь самое время создать ссылку для авторизации:

$link="<a href="https://steamcommunity.com/openid/login?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=checkid_setup&openid.return_to=".urldecode($steam["redirect"])."%3Fstate=steam&openid.realm=".urldecode($steam["redirect"])."&openid.ns.sreg=http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select">Аутентификация через Steam</a>"; // Создание ссылки для аутентификации
echo $link;

Проверяем пришел ли необходимый для нас код и правда ли мы пришли от steam`a:

if(isset($_GET["state"]) and @$_GET["state"]=="steam" and isset($_GET["openid_identity"])) {

Если всё хорошо, то получаем данные о пользователе:

preg_match("/^http://steamcommunity.com/openid/id/(7[0-9]{15,25}+)$/", $_GET["openid_identity"], $key);
$key=$key[1];
$userInfo = json_decode(file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=".$steam["key"]."&steamids=".$key)); 
$userInfo=$userInfo->response->players[0];

Переменная userInfo имеет структуру объекта, а не массива, а значит нужно обращаться к данным примерно так: $userInfo->id.

Ну вот и всё) Спасибо за внимание :)

1 комментариий

Загрузить еще комментариев

Новый комментарий