diff --git a/classes/login/FacebookLogin.php b/classes/login/FacebookLogin.php index 8e5dc8438f3d7bda5c476306342fc9cdf932102f..3d43507857d45e407a912cf109277d6dd0df5a55 100644 --- a/classes/login/FacebookLogin.php +++ b/classes/login/FacebookLogin.php @@ -43,43 +43,23 @@ class FacebookLogin extends LoginHandler { $helper->getPersistentDataHandler()->set('state', $_GET['state']); } - try { - // obtaining current URL without query string - $url = "https://$_SERVER[HTTP_HOST]" . strtok($_SERVER["REQUEST_URI"], '?'); - $accessToken = $helper->getAccessToken($url); - } catch (Facebook\Exceptions\FacebookResponseException $e) { - // When Graph returns an error - http_response_code(500); - die('Graph returned an error: ' . $e->getMessage()); - } catch (Facebook\Exceptions\FacebookSDKException $e) { - // When validation fails or other local issues - http_response_code(500); - die('Facebook SDK returned an error: ' . $e->getMessage()); - } + // obtaining current URL without query string + $accessToken = $helper->getAccessToken($this->locator->getBasePath() . $Facebook->callback); + if (!isset($accessToken)) { if ($helper->getError()) { $errorMessage = "Error: " . $helper->getError() . "<br>"; $errorMessage = $errorMessage . "Error Code: " . $helper->getErrorCode() . "<br>"; $errorMessage = $errorMessage . "Error Reason: " . $helper->getErrorReason() . "<br>"; $errorMessage = $errorMessage . "Error Description: " . $helper->getErrorDescription(); + throw new ServerErrorException($errorMessage); } else { - $errorMessage = "Bad request"; + throw new BadRequestException("Unable to obtain access token"); } - - http_response_code(500); - die($errorMessage); } - try { - // Returns a `Facebook\FacebookResponse` object - $response = $fb->get('/me?fields=id,first_name,last_name,email', $accessToken); - } catch (Facebook\Exceptions\FacebookResponseException $e) { - echo 'Graph returned an error: ' . $e->getMessage(); - exit; - } catch (Facebook\Exceptions\FacebookSDKException $e) { - echo 'Facebook SDK returned an error: ' . $e->getMessage(); - exit; - } + // Returns a `Facebook\FacebookResponse` object + $response = $fb->get('/me?fields=id,first_name,last_name,email', $accessToken); $_SESSION['fb_access_token'] = (string) $accessToken; diff --git a/config-example.yaml b/config-example.yaml index cf625bb8b14cb57781f7fda6d1fe0f14f7877469..87b2554cbe5eed89f78b71f9ee34acbad4e3bac6 100644 --- a/config-example.yaml +++ b/config-example.yaml @@ -23,7 +23,7 @@ authenticationMethods: Facebook: id: "XXXXXX" secret: "XXXXXX" - version: "v3.0" + version: "v8.0" callback: "/auth/social/facebook/token" LinkedIn: id: "XXXXXX"