You are here

class FacebookAuthManager in Social Auth Facebook 3.x

Same name and namespace in other branches
  1. 8.2 src/FacebookAuthManager.php \Drupal\social_auth_facebook\FacebookAuthManager
  2. 8 src/FacebookAuthManager.php \Drupal\social_auth_facebook\FacebookAuthManager

Contains all the logic for Facebook OAuth2 authentication.

Hierarchy

Expanded class hierarchy of FacebookAuthManager

1 file declares its use of FacebookAuthManager
FacebookAuthController.php in src/Controller/FacebookAuthController.php
1 string reference to 'FacebookAuthManager'
social_auth_facebook.services.yml in ./social_auth_facebook.services.yml
social_auth_facebook.services.yml
1 service uses FacebookAuthManager
social_auth_facebook.manager in ./social_auth_facebook.services.yml
Drupal\social_auth_facebook\FacebookAuthManager

File

src/FacebookAuthManager.php, line 14

Namespace

Drupal\social_auth_facebook
View source
class FacebookAuthManager extends OAuth2Manager {

  /**
   * The Facebook client.
   *
   * @var \League\OAuth2\Client\Provider\Facebook
   */
  protected $client;

  /**
   * Constructor.
   *
   * @param \Drupal\Core\Config\ConfigFactory $configFactory
   *   Used for accessing configuration object factory.
   * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $logger_factory
   *   The logger factory.
   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
   *   Used to get the authorization code from the callback request.
   */
  public function __construct(ConfigFactory $configFactory, LoggerChannelFactoryInterface $logger_factory, RequestStack $request_stack) {
    parent::__construct($configFactory
      ->get('social_auth_facebook.settings'), $logger_factory, $this->request = $request_stack
      ->getCurrentRequest());
  }

  /**
   * {@inheritdoc}
   */
  public function authenticate() {
    try {
      $this
        ->setAccessToken($this->client
        ->getLongLivedAccessToken($this->client
        ->getAccessToken('authorization_code', [
        'code' => $this->request->query
          ->get('code'),
      ])));
    } catch (\Exception $e) {
      $this->loggerFactory
        ->get('social_auth_facebook')
        ->error('There was an error during authentication. Exception: ' . $e
        ->getMessage());
    }
  }

  /**
   * {@inheritdoc}
   */
  public function getUserInfo() {
    try {
      $access_token = $this
        ->getAccessToken();
      if (!$this->user && $access_token != NULL) {
        $this->user = $this->client
          ->getResourceOwner($access_token);
      }
      else {
        $this->loggerFactory
          ->get('social_auth_facebook')
          ->error('There was an error fetching the access token for user.');
      }
    } catch (\Exception $e) {
      watchdog_exception('social_auth_facebook', $e);
    }
    return $this->user;
  }

  /**
   * {@inheritdoc}
   */
  public function getAuthorizationUrl() {
    $scopes = [
      'email',
      'public_profile',
    ];
    $extra_scopes = $this
      ->getScopes();
    if ($extra_scopes) {
      $scopes = array_merge($scopes, explode(',', $extra_scopes));
    }

    // Returns the URL where user will be redirected.
    return $this->client
      ->getAuthorizationUrl([
      'scope' => $scopes,
    ]);
  }

  /**
   * {@inheritdoc}
   */
  public function requestEndPoint($method, $path, $domain = NULL, array $options = []) {
    if (!$domain) {
      $domain = 'https://graph.facebook.com';
    }
    $url = $domain . '/v' . $this->settings
      ->get('graph_version') . $path;
    $url .= '&access_token=' . $this
      ->getAccessToken();
    try {
      $request = $this->client
        ->getAuthenticatedRequest($method, $url, $this
        ->getAccessToken(), $options);
    } catch (\Exception $e) {
      watchdog_exception('social_auth_facebook', $e);
      return NULL;
    }
    try {
      return $this->client
        ->getParsedResponse($request);
    } catch (IdentityProviderException $e) {
      $this->loggerFactory
        ->get('social_auth_facebook')
        ->error('There was an error when requesting ' . $url . '. Exception: ' . $e
        ->getMessage());
    }
    return NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function getState() {
    return $this->client
      ->getState();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
FacebookAuthManager::$client protected property The Facebook client. Overrides OAuth2Manager::$client
FacebookAuthManager::authenticate public function Authenticates the user. Overrides OAuth2ManagerInterface::authenticate
FacebookAuthManager::getAuthorizationUrl public function Returns the authorization URL where user will be redirected. Overrides OAuth2ManagerInterface::getAuthorizationUrl
FacebookAuthManager::getState public function Returns OAuth2 state. Overrides OAuth2ManagerInterface::getState
FacebookAuthManager::getUserInfo public function Gets data about the user. Overrides OAuth2ManagerInterface::getUserInfo
FacebookAuthManager::requestEndPoint public function Request and end point. Overrides OAuth2ManagerInterface::requestEndPoint
FacebookAuthManager::__construct public function Constructor. Overrides OAuth2Manager::__construct
OAuth2Manager::$accessToken protected property Access token for OAuth2 authentication.
OAuth2Manager::$endPoints protected property The end points to be requested.
OAuth2Manager::$loggerFactory protected property The logger factory.
OAuth2Manager::$request protected property The current request.
OAuth2Manager::$scopes protected property The scopes to be requested.
OAuth2Manager::$settings protected property Social Auth implementer settings.
OAuth2Manager::$user protected property The user returned by the provider. Overrides OAuth2Manager::$user
OAuth2Manager::getAccessToken public function Gets the access token after authentication. Overrides OAuth2ManagerInterface::getAccessToken
OAuth2Manager::getClient public function Gets the service client object. Overrides OAuth2ManagerInterface::getClient
OAuth2Manager::getEndPoints public function Gets the API endpoints to be requested. Overrides OAuth2ManagerInterface::getEndPoints
OAuth2Manager::getExtraDetails public function Request data from the declared endpoints. Overrides OAuth2ManagerInterface::getExtraDetails
OAuth2Manager::getScopes public function Gets the scopes defined in the settings form. Overrides OAuth2ManagerInterface::getScopes
OAuth2Manager::setAccessToken public function Sets the access token. Overrides OAuth2ManagerInterface::setAccessToken
OAuth2Manager::setClient public function Sets the provider client. Overrides OAuth2ManagerInterface::setClient