コード例 #1
0
 /**
  * @param Request $request
  * @param array $routeParams
  * @return \Psr\Http\Message\ResponseInterface|RedirectResponse
  */
 public function handle(Request $request, array $routeParams = [])
 {
     session_start();
     $provider = new Facebook(['clientId' => $this->settings->get('flarum-auth-facebook.app_id'), 'clientSecret' => $this->settings->get('flarum-auth-facebook.app_secret'), 'redirectUri' => $this->url->toRoute('auth.facebook'), 'graphApiVersion' => 'v2.4']);
     if (!isset($_GET['code'])) {
         $authUrl = $provider->getAuthorizationUrl(['scope' => ['email']]);
         $_SESSION['oauth2state'] = $provider->getState();
         return new RedirectResponse($authUrl);
     } elseif (empty($_GET['state']) || $_GET['state'] !== $_SESSION['oauth2state']) {
         unset($_SESSION['oauth2state']);
         echo 'Invalid state.';
         exit;
     }
     $token = $provider->getAccessToken('authorization_code', ['code' => $_GET['code']]);
     $owner = $provider->getResourceOwner($token);
     $email = $owner->getEmail();
     $username = preg_replace('/[^a-z0-9-_]/i', '', $owner->getName());
     return $this->authenticate(compact('email'), compact('username'));
 }
コード例 #2
0
 /**
  * Generates tokens for facebook social login
  * @param Request $request
  * @return static
  */
 public function authenticateFacebook(Request $request)
 {
     # Get access token from request
     #$accessToken = new AccessToken(array('access_token' => $request->input('access_token')));
     $accessToken = new AccessToken(array('access_token' => 'CAAFNoAIv7IMBAA7nXuT2WCoLrHN7Sfi96SizcjlIweZBjQZAA2Rzwj6es97hbZBfON4dIlmarqaIFZAZBMyCOe06wi13i19GlaZCFZCgVjPIk7aYaYa0CC1XVnN3jeAG3oJzur9x9ld2oMLT26VsR6ZBvkuaIaPt0uMQspZBgc6ZAvZCTZCPqsDQEwn4cmvo0IRwwZA5AWIeCENZCpUgZDZD'));
     # Create a new provider which takes values from config file
     $provider = new Facebook(['clientId' => config('easyauth.facebook.clientId'), 'clientSecret' => config('easyauth.facebook.clientSecret'), 'redirectUri' => config('easyauth.facebook.redirectUri'), 'graphApiVersion' => config('easyauth.facebook.graphApiVersion')]);
     try {
         # We got an access token, let's now get the owner details
         $ownerDetails = $provider->getResourceOwner($accessToken);
         $profile = array('provider_key' => $ownerDetails->getId(), 'first_name' => $ownerDetails->getFirstName(), 'last_name' => $ownerDetails->getLastName(), 'email' => $ownerDetails->getEmail(), 'avatar' => $ownerDetails->getPictureUrl(), 'provider' => 'Facebook');
         # Use these details to create a new profile or return a token in case the user exists
         return $this->authenticateOrCreateUser($profile);
     } catch (Exception $e) {
         # Failed to get user details
         exit('Something went wrong: ' . $e->getMessage());
     }
 }