public function FacebookAuthController::returnFromFb in Social Auth Facebook 8
Response for path 'user/login/facebook/callback'.
Facebook returns the user here after user has authenticated in FB.
1 string reference to 'FacebookAuthController::returnFromFb'
File
- src/
Controller/ FacebookAuthController.php, line 131
Class
- FacebookAuthController
- Returns responses for Simple FB Connect module routes.
Namespace
Drupal\social_auth_facebook\ControllerCode
public function returnFromFb() {
// Checks if user cancel login via Facebook.
$error = $this->request
->getCurrentRequest()
->get('error');
if ($error == 'access_denied') {
drupal_set_message($this
->t('You could not be authenticated.'), 'error');
return $this
->redirect('user.login');
}
/* @var \Facebook\Facebook|false $facebook */
$facebook = $this->networkManager
->createInstance('social_auth_facebook')
->getSdk();
// If facebook client could not be obtained.
if (!$facebook) {
drupal_set_message($this
->t('Social Auth Facebook not configured properly. Contact site administrator.'), 'error');
return $this
->redirect('user.login');
}
$this->facebookManager
->setClient($facebook)
->authenticate();
// Checks that user authorized our app to access user's email address.
if (!$this->facebookManager
->checkPermission('email')) {
drupal_set_message($this
->t('Facebook login failed. This site requires permission to get your email address from Facebook. Please try again.'), 'error');
$this->persistentDataHandler
->set('reprompt', TRUE);
return $this
->redirect('user.login');
}
// Gets user's FB profile from Facebook API.
if (!($fb_profile = $this->facebookManager
->getUserInfo())) {
drupal_set_message($this
->t('Facebook login failed, could not load Facebook profile. Contact site administrator.'), 'error');
return $this
->redirect('user.login');
}
// Gets user's email from the FB profile.
if (!($email = $this->facebookManager
->getEmail($fb_profile))) {
drupal_set_message($this
->t('Facebook login failed. This site requires permission to get your email address.'), 'error');
return $this
->redirect('user.login');
}
// Saves access token to session so that event subscribers can call FB API.
$this->persistentDataHandler
->set('access_token', $this->facebookManager
->getAccessToken());
// If user information could be retrieved.
return $this->userManager
->authenticateUser($email, $fb_profile
->getField('name'), $fb_profile
->getField('id'), $this->facebookManager
->getFbProfilePicUrl());
}