for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* SocialConnect project
* @author: Patsura Dmitry https://github.com/ovr <[email protected]>
*/
declare(strict_types=1);
namespace SocialConnect\OpenID\Provider;
use SocialConnect\Common\ArrayHydrator;
use SocialConnect\Provider\AccessTokenInterface;
use SocialConnect\Common\Entity\User;
class Steam extends \SocialConnect\OpenID\AbstractProvider
{
const NAME = 'steam';
* {@inheritdoc}
public function getOpenIdUrl()
return 'https://steamcommunity.com/openid/id';
}
public function getBaseUri()
return 'https://api.steampowered.com/';
public function getName()
return self::NAME;
* {@inheritDoc}
protected function parseUserIdFromIdentity($identity): string
preg_match(
'/7[0-9]{15,25}/',
$identity,
$matches
);
return (string) $matches[0];
public function prepareRequest(string $method, string $uri, array &$headers, array &$query, AccessTokenInterface $accessToken = null): void
$query['key'] = $this->consumer->getKey();
public function getIdentity(AccessTokenInterface $accessToken)
$query = [
'steamids' => $accessToken->getUserId()
];
$response = $this->request('GET', 'ISteamUser/GetPlayerSummaries/v0002/', $query, $accessToken);
$hydrator = new ArrayHydrator([
'steamid' => 'id',
'personaname' => 'username',
'realname' => 'fullname'
]);
return $hydrator->hydrate(new User(), $response['response']['players'][0]);