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

namespace HybridauthProvider;

use 
HybridauthAdapterOAuth2;
use 
HybridauthDataCollection;
use 
HybridauthExceptionUnexpectedApiResponseException;
use 
HybridauthUser;

/**
 * Instagram OAuth2 provider adapter via Instagram Basic Display API.
 */
class Instagram extends OAuth2
{
    
/**
     * {@inheritdoc}
     */
    
protected $scope 'user_profile,user_media';

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

    
/**
     * {@inheritdoc}
     */
    
protected $authorizeUrl 'https://api.instagram.com/oauth/authorize';

    
/**
     * {@inheritdoc}
     */
    
protected $accessTokenUrl 'https://api.instagram.com/oauth/access_token';

    
/**
     * {@inheritdoc}
     */
    
protected $apiDocumentation 'https://developers.facebook.com/docs/instagram-basic-display-api';

    
/**
     * {@inheritdoc}
     */
    
protected function initialize()
    {
        
parent::initialize();

        
// The Instagram API requires an access_token from authenticated users
        // for each endpoint.
        
$accessToken $this->getStoredData($this->accessTokenName);
        
$this->apiRequestParameters[$this->accessTokenName] = $accessToken;
    }

    
/**
     * {@inheritdoc}
     */
    
public function getUserProfile()
    {
        
$response $this->apiRequest('me''GET', [
            
'fields' => 'id,username,account_type,media_count',
        ]);

        
$data = new Collection($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('username');
        
$userProfile->profileURL "https://instagram.com/{$userProfile->displayName}";
        
$userProfile->data = [
            
'account_type' => $data->get('account_type'),
            
'media_count' => $data->get('media_count'),
        ];

        return 
$userProfile;
    }

    
/**
     * Fetch user medias.
     *
     * @param int $limit Number of elements per page.
     * @param string $pageId Current pager ID.
     * @param array|null $fields Fields to fetch per media.
     *
     * @return HybridauthDataCollection
     *
     * @throws HybridauthExceptionHttpClientFailureException
     * @throws HybridauthExceptionHttpRequestFailedException
     * @throws HybridauthExceptionInvalidAccessTokenException
     * @throws HybridauthExceptionUnexpectedApiResponseException
     */
    
public function getUserMedia($limit 12$pageId null, array $fields null)
    {
        if (empty(
$fields)) {
            
$fields = [
                
'id',
                
'caption',
                
'media_type',
                
'media_url',
                
'thumbnail_url',
                
'permalink',
                
'timestamp',
                
'username',
            ];
        }

        
$params = [
            
'fields' => implode(','$fields),
            
'limit' => $limit,
        ];
        if (
$pageId !== null) {
            
$params['after'] = $pageId;
        }

        
$response $this->apiRequest('me/media''GET'$params);

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

        return 
$data;
    }

    
/**
     * Fetches a single user's media.
     *
     * @param string $mediaId Media ID.
     * @param array|null $fields Fields to fetch per media.
     *
     * @return HybridauthDataCollection
     *
     * @throws HybridauthExceptionHttpClientFailureException
     * @throws HybridauthExceptionHttpRequestFailedException
     * @throws HybridauthExceptionInvalidAccessTokenException
     * @throws HybridauthExceptionUnexpectedApiResponseException
     */
    
public function getMedia($mediaId, array $fields null)
    {
        if (empty(
$fields)) {
            
$fields = [
                
'id',
                
'caption',
                
'media_type',
                
'media_url',
                
'thumbnail_url',
                
'permalink',
                
'timestamp',
                
'username',
            ];
        }

        
$response $this->apiRequest($mediaId'GET', [
            
'fields' => implode(','$fields),
        ]);

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

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