Exceptions Handling

Hybridauth uses exceptions extensively and it’s important that these exceptions be properly caught/handled in your code.

Example:

try {
    $github = new Hybridauth\Provider\GitHub($config);
    
    $github->authenticate();
    $github->getUserProfile();
}

/**
 * Catch Curl Errors
 *
 * This kind of error may happen when:
 *     - Internet or Networks issues.
 *     - Your server configuration is not setup correctly.
 * The full list of curl errors that may happen can be found at http://curl.haxx.se/libcurl/c/libcurl-errors.html
 */
catch (Hybridauth\Exception\HttpClientFailureException $e) {
    echo 'Curl text error message : ' . $github->getHttpClient()->getResponseClientError();
}

/**
 * Catch API Requests Errors
 *
 * This usually happen when requesting a:
 *     - Wrong URI or a mal-formatted http request.
 *     - Protected resource without providing a valid access token.
 */
catch (Hybridauth\Exception\HttpRequestFailedException $e) {
    echo 'Raw API Response: ' . $github->getHttpClient()->getResponseBody();
}

/**
 * This fellow will catch everything else
 */
catch (\Exception $e) {
    echo 'Oops! We ran into an unknown issue: ' . $e->getMessage();
}


Exceptions Inheritance Tree:

Exception
|   RuntimeException
|   |    UnexpectedValueException
|   |    |    AuthorizationDeniedException
|   |    |    HttpClientFailureException
|   |    |    HttpRequestFailedException
|   |    |    InvalidAuthorizationCodeException
|   |    |    InvalidAuthorizationStateException
|   |    |    InvalidOauthTokenException
|   |    |    InvalidAccessTokenException
|   |    |    UnexpectedApiResponseException
|   |
|   |    BadMethodCallException
|   |    |   NotImplementedException
|   |
|   |    InvalidArgumentException
|   |    |   InvalidApplicationCredentialsException
|   |    |   InvalidOpenidIdentifierException


Exceptions description:

Exception Name Description
Exception Exception is the base class for all Exceptions.
RuntimeException Exception thrown if an error which can only be found on runtime occurs.
InvalidArgumentException Exception thrown if an argument is not of the expected type.
UnexpectedValueException Exception thrown if a value does not match with a set of values.
BadMethodCallException Exception thrown if a callback refers to an undefined method or if some arguments are missing.
NotImplementedException Exception thrown when a requested method or operation is not implemented.
InvalidApplicationCredentialsException Exception thrown when your application key and secret are not setup correctly
InvalidAuthorizationCodeException Exception thrown when an OAuth2 authentication request fails due to a missing, invalid, or mismatching redirection URI, or if the client identifier is missing or invalid.
InvalidAuthorizationStateException Exception thrown when an OAuth2 authorization state is either invalid or has been used.
InvalidAccessTokenException Exception thrown when an OAuth1 access_token is invalid.
UnexpectedApiResponseException  
InvalidOauthTokenException Exception thrown when an OAuth1 oauth_token is invalid.
InvalidOpenidIdentifierException Exception thrown when an OpenID identifier openid_identifier was not setup correctly.
HttpClientFailureException Exception thrown when the curl http client returns an errors. Typically happen due to networks issues or server configuration.
HttpRequestFailedException Exception thrown when a requested URL returns an errors. This usually happen when requesting a wrong URI or a protected resource without providing a valid access token.
AuthorizationDeniedException Exception thrown when a user deny the authentication/authorization request.