Skip to content
Snippets Groups Projects
Select Git revision
  • 2ffe793fd8e25f32853325c5ee62f4c984c47a1d
  • master default protected
  • v4.5.2
  • v4.5.1
  • v4.5.0
  • v4.4.0
  • v4.3.3
  • v4.3.2
  • v4.3.1
  • v4.3.0
  • v4.2.0
  • v4.1.0
  • v4.0.2
  • v4.0.1
  • v4.0.0
  • v3.4.0
  • v3.3.0
  • v3.2.0
  • v3.1.1
  • v3.1.0
  • v3.0.1
  • v3.0.0
22 results

UserInterfaceState.xcuserstate

Blame
  • FacebookLogin.php 2.68 KiB
    <?php
    
    namespace RAP;
    
    class FacebookLogin extends LoginHandler {
    
        public function __construct(Locator $locator) {
            parent::__construct($locator, Identity::FACEBOOK);
        }
    
        public function login(): string {
    
            // Retrieve Facebook configuration
            $Facebook = $this->locator->config->authenticationMethods->Facebook;
    
            $fb = new \Facebook\Facebook([
                'app_id' => $Facebook->id,
                'app_secret' => $Facebook->secret,
                'default_graph_version' => $Facebook->version,
            ]);
    
            $helper = $fb->getRedirectLoginHelper();
    
            $permissions = ['email']; // Optional permissions: we need user email
    
            $loginUrl = $helper->getLoginUrl($this->locator->getBasePath() . $Facebook->callback, $permissions);
    
            return $loginUrl;
        }
    
        public function retrieveToken(): string {
            // Retrieve Facebook configuration
            $Facebook = $this->locator->config->authenticationMethods->Facebook;
    
            $fb = new \Facebook\Facebook([
                'app_id' => $Facebook->id,
                'app_secret' => $Facebook->secret,
                'default_graph_version' => $Facebook->version,
            ]);
    
            $helper = $fb->getRedirectLoginHelper();
            if (isset($_GET['state'])) {
                $helper->getPersistentDataHandler()->set('state', $_GET['state']);
            }
    
            // 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 {
                    throw new BadRequestException("Unable to obtain access token");
                }
            }
    
            // Returns a `Facebook\FacebookResponse` object
            $response = $fb->get('/me?fields=id,first_name,last_name,email', $accessToken);
    
            $_SESSION['fb_access_token'] = (string) $accessToken;
    
            $fbUser = $response->getGraphUser();
    
            $typedId = $fbUser["id"];
    
            return $this->onIdentityDataReceived($typedId, function($identity) use($fbUser) {
                        $identity->email = $fbUser["email"];
                        $identity->name = $fbUser["first_name"];
                        $identity->surname = $fbUser["last_name"];
                    });
        }
    
    }