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

namespace HybridauthProvider;

use 
HybridauthAdapterOAuth2;
use 
HybridauthData;
use 
HybridauthExceptionUnexpectedApiResponseException;
use 
HybridauthUser;

/**
 * Microsoft Graph provider adapter.
 */
class MicrosoftGraph extends OAuth2
{
    
/**
     * {@inheritdoc}
     */
    
public $scope 'openid user.read contacts.read';

    
/**
     * {@inheritdoc}
     */
    
protected $apiBaseUrl 'https://graph.microsoft.com/v1.0/';

    
/**
     * {@inheritdoc}
     */
    
protected $authorizeUrl 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize';

    
/**
     * {@inheritdoc}
     */
    
protected $accessTokenUrl 'https://login.microsoftonline.com/common/oauth2/v2.0/token';

    
/**
     * {@inheritdoc}
     */
    
protected $apiDocumentation 'https://developer.microsoft.com/en-us/graph/docs/concepts/php';

    
/**
     * {@inheritdoc}
     */
    
public function getUserProfile()
    {
        
$response $this->apiRequest('me');

        
$data = new DataCollection($response);

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

        
$userProfile = new UserProfile();

        
$userProfile->identifier    $data->get('id');
        
$userProfile->displayName   $data->get('displayName');
        
$userProfile->firstName     $data->get('givenName');
        
$userProfile->lastName      $data->get('surname');
        
$userProfile->email         $data->get('mail');
        
$userProfile->language      $data->get('preferredLanguage');

        return 
$userProfile;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getUserContacts()
    {
        
$apiUrl   'me/contacts?$top=50';
        
$contacts = [];

        do {
            
$response $this->apiRequest($apiUrl);
            
$data     = new DataCollection($response);
            if (!
$data->exists('value')) {
                throw new 
UnexpectedApiResponseException('Provider API returned an unexpected response.');
            }
            foreach (
$data->filter('value')->toArray() as $entry) {
                
$entry = new DataCollection($entry);
                
$userContact              = new UserContact();
                
$userContact->identifier  $entry->get('id');
                
$userContact->displayName $entry->get('displayName');
                if (!empty(
$entry->get('emailAddresses'))) {
                    
$userContact->email $entry->get('emailAddresses')[0]->address;
                }
                
// only add to collection if we have usefull data
                
if (!empty($userContact->displayName) || !empty($userContact->email)) {
                    
$contacts[] = $userContact;
                }
            }

            if (
$data->exists('@odata.nextLink')) {
                
$apiUrl $data->get('@odata.nextLink');

                
$pagedList true;
            } else {
                
$pagedList false;
            }
        } while (
$pagedList);

        return 
$contacts;
    }
}
Онлайн: 3
Реклама