Вход Регистрация
Файл: sngine-v2.8/Script/includes/libs/HybridAuth/Provider/Steam.php
Строк: 103
<?php
/*!
* Hybridauth
* https://hybridauth.github.io | https://github.com/hybridauth/hybridauth
*  (c) 2017 Hybridauth authors | https://hybridauth.github.io/license.html
*/

namespace HybridauthProvider;

use 
HybridauthAdapterOpenID;
use 
HybridauthExceptionUnexpectedApiResponseException;
use 
HybridauthData;
use 
HybridauthUser;

/**
 * Steam OpenID provider adapter.
 *
 * Example:
 *
 *   $config = [
 *       'callback' => HybridauthHttpClientUtil::getCurrentUrl(),
 *       'keys'     => [ 'secret' => 'steam-api-key' ]
 *   ];
 *
 *   $adapter = new HybridauthProviderSteam( $config );
 *
 *   $adapter->authenticate();

 *   $userProfile = $adapter->getUserProfile();
 */
class Steam extends OpenID
{
    
/**
    * {@inheritdoc}
    */
    
protected $openidIdentifier 'http://steamcommunity.com/openid';

    
/**
    * {@inheritdoc}
    */
    
public function authenticateFinish()
    {
        
parent::authenticateFinish();

        
$userProfile $this->storage->get($this->providerId '.user');

        
$userProfile->identifier str_ireplace([
            
'http://steamcommunity.com/openid/id/',
            
'https://steamcommunity.com/openid/id/',
        ], 
''$userProfile->identifier);

        if (!
$userProfile->identifier) {
            throw new 
UnexpectedApiResponseException('Provider API returned an unexpected response.');
        }

        try {
            
$apiKey $this->config->filter('keys')->get('secret');

            
// if api key is provided, we attempt to use steam web api
            
if ($apiKey) {
                
$result $this->getUserProfileWebAPI($apiKey$userProfile->identifier);
            } else {
                
// otherwise we fallback to community data
                
$result $this->getUserProfileLegacyAPI($userProfile->identifier);
            }

            
// fetch user profile
            
foreach ($result as $k => $v) {
                
$userProfile->$k $v ?: $userProfile->$k;
            }
        } catch (
Exception $e) {
        }

        
// store user profile
        
$this->storage->set($this->providerId '.user'$userProfile);
    }

    
/**
     * Fetch user profile on Steam web API
     *
     * @param $apiKey
     * @param $steam64
     *
     * @return array
     */
    
public function getUserProfileWebAPI($apiKey$steam64)
    {
        
$q http_build_query(['key' => $apiKey'steamid' => $steam64]);
        
$apiUrl 'http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?' $q;

        
$response $this->httpClient->request($apiUrl);

        
$data json_decode($response);

        
$data = isset($data->response->players[0]) ? $data->response->players[0] : null;

        
$data = new DataCollection($data);

        
$userProfile = [];

        
$userProfile['displayName'] = (string)$data->get('personaname');
        
$userProfile['firstName'] = (string)$data->get('realname');
        
$userProfile['photoURL'] = (string)$data->get('avatarfull');
        
$userProfile['profileURL'] = (string)$data->get('profileurl');
        
$userProfile['country'] = (string)$data->get('loccountrycode');

        return 
$userProfile;
    }

    
/**
     * Fetch user profile on community API
     * @param $steam64
     * @return array
*/
    
public function getUserProfileLegacyAPI($steam64)
    {
        
libxml_use_internal_errors(false);

        
$apiUrl 'http://steamcommunity.com/profiles/' $steam64 '/?xml=1';

        
$response $this->httpClient->request($apiUrl);

        
$data = new SimpleXMLElement($response);

        
$data = new DataCollection($data);

        
$userProfile = [];

        
$userProfile['displayName'] = (string)$data->get('steamID');
        
$userProfile['firstName'] = (string)$data->get('realname');
        
$userProfile['photoURL'] = (string)$data->get('avatarFull');
        
$userProfile['description'] = (string)$data->get('summary');
        
$userProfile['region'] = (string)$data->get('location');
        
$userProfile['profileURL'] = (string)$data->get('customURL')
          ? 
'http://steamcommunity.com/id/' . (string)$data->get('customURL')
          : 
'http://steamcommunity.com/profiles/' $steam64;

        return 
$userProfile;
    }
}
Онлайн: 1
Реклама