Imgur
        
        extends OAuth2Provider
    
    
            
            in package
            
        
    
            
            implements
                            CSRFToken,                             TokenRefresh                    
    
    
Imgur OAuth2
Note: imgur sends an "expires_in" of 315360000 (10 years!) for access tokens, but states in the docs that tokens expire after one month. Either manually saving the expiry with the token to trigger auto refresh or manually refreshing via the refreshAccessToken() method is required.
Tags
Table of Contents
Interfaces
- CSRFToken
 - Specifies the methods required for the OAuth2 CSRF token validation ("state parameter")
 - TokenRefresh
 - Indicates whether the provider is capable of the OAuth2 token refresh.
 
Constants
- MAGIC_PROPERTIES = ['apiDocs', 'apiURL', 'applicationURL', 'serviceName', 'userRevokeURL']
 
Properties
- $accessTokenURL : string
 - $apiDocs : string|null
 - $apiURL : string
 - $applicationURL : string|null
 - $authURL : string
 - $clientCredentialsTokenURL : string|null
 - An optional client credentials token endpoint in case the provider supports ClientCredentials.
 - $http : ClientInterface
 - $logger : LoggerInterface
 - $options : OAuthOptions|SettingsContainerInterface
 - $refreshTokenURL : string
 - An optional refresh token endpoint in case the provider supports TokenRefresh.
 - $requestFactory : RequestFactoryInterface
 - $revokeURL : string
 - an optional URL for application side token revocation
 - $serviceName : string
 - the name of the provider/class (magic)
 - $storage : OAuthStorageInterface
 - $streamFactory : StreamFactoryInterface
 - $uriFactory : UriFactoryInterface
 - $userRevokeURL : string|null
 
Methods
- __construct() : mixed
 - OAuthProvider constructor.
 - __get() : string|null
 - Magic getter for the properties specified in self::ALLOWED_PROPERTIES
 - getAccessToken() : AccessToken
 - Obtains an OAuth2 access token with the given $code, verifies the $state if the provider implements the CSRFToken interface, and returns an AccessToken object
 - getAccessTokenFromStorage() : AccessToken
 - Gets an access token from the current OAuthStorageInterface (shorthand/convenience)
 - getAuthURL() : UriInterface
 - getClientCredentialsToken() : AccessToken
 - getRequestAuthorization() : RequestInterface
 - getStorage() : OAuthStorageInterface
 - Returns the current OAuthStorageInterface
 - InvalidateAccessToken() : bool
 - me() : ResponseInterface
 - refreshAccessToken() : AccessToken
 - request() : ResponseInterface
 - Prepares an API request to $path with the given parameters, gets authorization, fires the request and returns a PSR-7 ResponseInterface with the corresponding API response
 - sendRequest() : ResponseInterface
 - setLogger() : static
 - Sets an optional PSR-3 LoggerInterface
 - setRequestFactory() : static
 - Sets an optional PSR-17 RequestFactoryInterface
 - setStorage() : static
 - Sets an optional OAuthStorageInterface
 - setStreamFactory() : static
 - Sets an optional PSR-17 StreamFactoryInterface
 - setUriFactory() : static
 - Sets an optional PSR-17 UriFactoryInterface
 - storeAccessToken() : static
 - Sets an access token in the current OAuthStorageInterface (shorthand/convenience)
 - cleanBodyParams() : array<string|int, mixed>
 - Cleans an array of body parameters
 - cleanQueryParams() : array<string|int, mixed>
 - Cleans an array of query parameters
 - construct() : void
 - A replacement constructor that you can call in extended classes, so that you don't have to implement the monstrous original `__construct()`
 - createAccessToken() : AccessToken
 - Creates an access token with the provider set to $this->serviceName
 - getAccessTokenRequestBodyParams() : array<string|int, mixed>
 - prepares the request body parameters for the access token request
 - getAuthURLRequestParams() : array<string|int, mixed>
 - prepares the query parameters for the auth URL
 - getClientCredentialsTokenRequestBodyParams() : array<string|int, mixed>
 - prepares the request body parameters for the client credentials token request
 - getRefreshAccessTokenRequestBodyParams() : array<string|int, mixed>
 - prepares the request body parameters for the token refresh
 - getRequestBody() : StreamInterface
 - Prepares the request body
 - getRequestHeaders() : array<string|int, mixed>
 - Prepare request headers
 - getRequestTarget() : string
 - Determine the request target from the given URI (path segment or URL) with respect to $apiURL, anything except host and path will be ignored, scheme will always be set to "https".
 - getRequestURL() : string
 - Prepares the request URL
 - getTokenResponseData() : array<string|int, mixed>
 - extracts the data from the access token response and returns an array with the key->value pairs contained
 - nonce() : string
 - returns a 32 byte random string (in hexadecimal representation) for use as a nonce
 - parseTokenResponse() : AccessToken
 - Parses the response from a request to the token endpoint
 - sendAccessTokenRequest() : ResponseInterface
 - sends a request to the access/refresh token endpoint $url with the given $body as form data
 - sendClientCredentialsTokenRequest() : ResponseInterface
 - sends a request to the client credentials endpoint, using basic authentication
 
Constants
MAGIC_PROPERTIES
    protected
        array<string|int, string>
    MAGIC_PROPERTIES
    = ['apiDocs', 'apiURL', 'applicationURL', 'serviceName', 'userRevokeURL']
    
    
    
Properties
$accessTokenURL
    protected
        string
    $accessTokenURL
     = 'https://api.imgur.com/oauth2/token'
    
    
    
$apiDocs
    protected
        string|null
    $apiDocs
     = 'https://apidocs.imgur.com'
    
    
    
$apiURL
    protected
        string
    $apiURL
     = 'https://api.imgur.com'
    
    
    
$applicationURL
    protected
        string|null
    $applicationURL
     = 'https://api.imgur.com/oauth2/addclient'
    
    
    
$authURL
    protected
        string
    $authURL
     = 'https://api.imgur.com/oauth2/authorize'
    
    
    
$clientCredentialsTokenURL
An optional client credentials token endpoint in case the provider supports ClientCredentials.
    protected
        string|null
    $clientCredentialsTokenURL
     = null
        If the provider supports client credentials and $clientCredentialsTokenURL is null, $accessTokenURL will be used instead.
$http
    protected
        ClientInterface
    $http
    
    
    
    
$logger
    protected
        LoggerInterface
    $logger
     = new NullLogger()
    
    
    
$options
    protected
        OAuthOptions|SettingsContainerInterface
    $options
    
    
    
    
$refreshTokenURL
An optional refresh token endpoint in case the provider supports TokenRefresh.
    protected
        string
    $refreshTokenURL
    
        If the provider supports token refresh and $refreshTokenURL is null, $accessTokenURL will be used instead.
Tags
$requestFactory
    protected
        RequestFactoryInterface
    $requestFactory
    
    
    
    
$revokeURL
an optional URL for application side token revocation
    protected
        string
    $revokeURL
    
    
    
    
    Tags
$serviceName
the name of the provider/class (magic)
    protected
        string
    $serviceName
    
    
    
    
$storage
    protected
        OAuthStorageInterface
    $storage
     = new MemoryStorage()
    
    
    
$streamFactory
    protected
        StreamFactoryInterface
    $streamFactory
    
    
    
    
$uriFactory
    protected
        UriFactoryInterface
    $uriFactory
    
    
    
    
$userRevokeURL
    protected
        string|null
    $userRevokeURL
     = 'https://imgur.com/account/settings/apps'
    
    
    
Methods
__construct()
OAuthProvider constructor.
    public
                    __construct(OAuthOptions|SettingsContainerInterface $options, ClientInterface $http, RequestFactoryInterface $requestFactory, StreamFactoryInterface $streamFactory, UriFactoryInterface $uriFactory[, OAuthStorageInterface $storage = new MemoryStorage() ][, LoggerInterface $logger = new NullLogger() ]) : mixed
    Parameters
- $options : OAuthOptions|SettingsContainerInterface
 - $http : ClientInterface
 - $requestFactory : RequestFactoryInterface
 - $streamFactory : StreamFactoryInterface
 - $uriFactory : UriFactoryInterface
 - $storage : OAuthStorageInterface = new MemoryStorage()
 - $logger : LoggerInterface = new NullLogger()
 
__get()
Magic getter for the properties specified in self::ALLOWED_PROPERTIES
    public
        final            __get(string $name) : string|null
    Parameters
- $name : string
 
Return values
string|nullgetAccessToken()
Obtains an OAuth2 access token with the given $code, verifies the $state if the provider implements the CSRFToken interface, and returns an AccessToken object
    public
                    getAccessToken(string $code[, string|null $state = null ]) : AccessToken
    Parameters
- $code : string
 - $state : string|null = null
 
Tags
Return values
AccessTokengetAccessTokenFromStorage()
Gets an access token from the current OAuthStorageInterface (shorthand/convenience)
    public
                    getAccessTokenFromStorage() : AccessToken
    Tags
Return values
AccessTokengetAuthURL()
    public
                    getAuthURL([array<string|int, mixed>|null $params = null ][, array<string|int, string>|null $scopes = null ]) : UriInterface
    Parameters
- $params : array<string|int, mixed>|null = null
 - $scopes : array<string|int, string>|null = null
 
Tags
Return values
UriInterfacegetClientCredentialsToken()
    public
                    getClientCredentialsToken([array<string|int, string>|null $scopes = null ]) : AccessToken
    Parameters
- $scopes : array<string|int, string>|null = null
 
Tags
Return values
AccessTokengetRequestAuthorization()
    public
                    getRequestAuthorization(RequestInterface $request[, AccessToken|null $token = null ]) : RequestInterface
    Parameters
- $request : RequestInterface
 - $token : AccessToken|null = null
 
Tags
Return values
RequestInterfacegetStorage()
Returns the current OAuthStorageInterface
    public
        final            getStorage() : OAuthStorageInterface
    Tags
Return values
OAuthStorageInterfaceInvalidateAccessToken()
    public
                    InvalidateAccessToken([AccessToken|null $token = null ]) : bool
    Parameters
- $token : AccessToken|null = null
 
Tags
Return values
boolme()
    public
                    me() : ResponseInterface
    Tags
Return values
ResponseInterfacerefreshAccessToken()
    public
                    refreshAccessToken([AccessToken|null $token = null ]) : AccessToken
    Parameters
- $token : AccessToken|null = null
 
Tags
Return values
AccessTokenrequest()
Prepares an API request to $path with the given parameters, gets authorization, fires the request and returns a PSR-7 ResponseInterface with the corresponding API response
    public
                    request(string $path[, array<string|int, mixed>|null $params = null ][, string|null $method = null ][, StreamInterface|array<string|int, mixed>|string|null $body = null ][, array<string|int, mixed>|null $headers = null ][, string|null $protocolVersion = null ]) : ResponseInterface
    Parameters
- $path : string
 - $params : array<string|int, mixed>|null = null
 - $method : string|null = null
 - $body : StreamInterface|array<string|int, mixed>|string|null = null
 - $headers : array<string|int, mixed>|null = null
 - $protocolVersion : string|null = null
 
Tags
Return values
ResponseInterfacesendRequest()
    public
        final            sendRequest(RequestInterface $request) : ResponseInterface
    Parameters
- $request : RequestInterface
 
Tags
Return values
ResponseInterfacesetLogger()
Sets an optional PSR-3 LoggerInterface
    public
        final            setLogger(LoggerInterface $logger) : static
    Parameters
- $logger : LoggerInterface
 
Tags
Return values
staticsetRequestFactory()
Sets an optional PSR-17 RequestFactoryInterface
    public
        final            setRequestFactory(RequestFactoryInterface $requestFactory) : static
    Parameters
- $requestFactory : RequestFactoryInterface
 
Tags
Return values
staticsetStorage()
Sets an optional OAuthStorageInterface
    public
        final            setStorage(OAuthStorageInterface $storage) : static
    Parameters
- $storage : OAuthStorageInterface
 
Tags
Return values
staticsetStreamFactory()
Sets an optional PSR-17 StreamFactoryInterface
    public
        final            setStreamFactory(StreamFactoryInterface $streamFactory) : static
    Parameters
- $streamFactory : StreamFactoryInterface
 
Tags
Return values
staticsetUriFactory()
Sets an optional PSR-17 UriFactoryInterface
    public
        final            setUriFactory(UriFactoryInterface $uriFactory) : static
    Parameters
- $uriFactory : UriFactoryInterface
 
Tags
Return values
staticstoreAccessToken()
Sets an access token in the current OAuthStorageInterface (shorthand/convenience)
    public
                    storeAccessToken(AccessToken $token) : static
    Parameters
- $token : AccessToken
 
Tags
Return values
staticcleanBodyParams()
Cleans an array of body parameters
    protected
                    cleanBodyParams(iterable<string|int, mixed> $params) : array<string|int, mixed>
    Parameters
- $params : iterable<string|int, mixed>
 
Return values
array<string|int, mixed>cleanQueryParams()
Cleans an array of query parameters
    protected
                    cleanQueryParams(iterable<string|int, mixed> $params) : array<string|int, mixed>
    Parameters
- $params : iterable<string|int, mixed>
 
Return values
array<string|int, mixed>construct()
A replacement constructor that you can call in extended classes, so that you don't have to implement the monstrous original `__construct()`
    protected
                    construct() : void
    createAccessToken()
Creates an access token with the provider set to $this->serviceName
    protected
                    createAccessToken() : AccessToken
    Tags
Return values
AccessTokengetAccessTokenRequestBodyParams()
prepares the request body parameters for the access token request
    protected
                    getAccessTokenRequestBodyParams(string $code) : array<string|int, mixed>
    Parameters
- $code : string
 
Return values
array<string|int, mixed>getAuthURLRequestParams()
prepares the query parameters for the auth URL
    protected
                    getAuthURLRequestParams(array<string|int, mixed> $params, array<string|int, mixed> $scopes) : array<string|int, mixed>
    Parameters
- $params : array<string|int, mixed>
 - $scopes : array<string|int, mixed>
 
Return values
array<string|int, mixed>getClientCredentialsTokenRequestBodyParams()
prepares the request body parameters for the client credentials token request
    protected
                    getClientCredentialsTokenRequestBodyParams(array<string|int, string>|null $scopes) : array<string|int, mixed>
    Parameters
- $scopes : array<string|int, string>|null
 
Return values
array<string|int, mixed>getRefreshAccessTokenRequestBodyParams()
prepares the request body parameters for the token refresh
    protected
                    getRefreshAccessTokenRequestBodyParams(string $refreshToken) : array<string|int, mixed>
    Parameters
- $refreshToken : string
 
Return values
array<string|int, mixed>getRequestBody()
Prepares the request body
    protected
                    getRequestBody(StreamInterface|array<string|int, mixed>|string $body, RequestInterface $request) : StreamInterface
    Parameters
- $body : StreamInterface|array<string|int, mixed>|string
 - $request : RequestInterface
 
Tags
Return values
StreamInterfacegetRequestHeaders()
Prepare request headers
    protected
                    getRequestHeaders([array<string|int, mixed>|null $headers = null ]) : array<string|int, mixed>
    Parameters
- $headers : array<string|int, mixed>|null = null
 
Return values
array<string|int, mixed>getRequestTarget()
Determine the request target from the given URI (path segment or URL) with respect to $apiURL, anything except host and path will be ignored, scheme will always be set to "https".
    protected
                    getRequestTarget(string $uri) : string
    Throws if the host of a given URL does not match the host of $apiURL.
Parameters
- $uri : string
 
Tags
Return values
stringgetRequestURL()
Prepares the request URL
    protected
                    getRequestURL(string $path[, array<string|int, mixed>|null $params = null ]) : string
    Parameters
- $path : string
 - $params : array<string|int, mixed>|null = null
 
Return values
stringgetTokenResponseData()
extracts the data from the access token response and returns an array with the key->value pairs contained
    protected
                    getTokenResponseData(ResponseInterface $response) : array<string|int, mixed>
    we don't bother checking the content type here as it's sometimes vendor specific, not set or plain wrong: the spec mandates a JSON body which is what almost all providers send - weird exceptions:
- mixcloud sends JSON with a "text/javascript" header
 - deezer sends form-data with a "text/html" header (???)
 - silly amazon sends gzip compressed data... (handled by decodeJSON)
 
Parameters
- $response : ResponseInterface
 
Tags
Return values
array<string|int, mixed>nonce()
returns a 32 byte random string (in hexadecimal representation) for use as a nonce
    protected
                    nonce([int $bytes = 32 ]) : string
    Parameters
- $bytes : int = 32
 
Tags
Return values
stringparseTokenResponse()
Parses the response from a request to the token endpoint
    protected
                    parseTokenResponse(ResponseInterface $response) : AccessToken
    Parameters
- $response : ResponseInterface
 
Tags
Return values
AccessTokensendAccessTokenRequest()
sends a request to the access/refresh token endpoint $url with the given $body as form data
    protected
                    sendAccessTokenRequest(string $url, array<string|int, mixed> $body) : ResponseInterface
    Parameters
- $url : string
 - $body : array<string|int, mixed>
 
Return values
ResponseInterfacesendClientCredentialsTokenRequest()
sends a request to the client credentials endpoint, using basic authentication
    protected
                    sendClientCredentialsTokenRequest(string $url, array<string|int, mixed> $body) : ResponseInterface
    Parameters
- $url : string
 - $body : array<string|int, mixed>