Авторизация через Steam
Авторизация через Steam - идеальное решение для игровых сайтов, сокращающий время на регистрацию в разы!
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.
Ну вот и всё) Спасибо за внимание :)
Бабкин Кирилл
ошибка стима