Example #1
1
 /**
  * Build an OAuth 2 provider instance.
  *
  * @param SocialiteManager $socialite
  * @param string           $providerClass must extend Laravel\Socialite\Two\AbstractProvider
  * @param array            $config
  *
  * @return \Laravel\Socialite\Two\AbstractProvider
  */
 protected function buildOAuth2Provider(SocialiteManager $socialite, $providerClass, array $config)
 {
     $this->classExtends($providerClass, 'Laravel\\Socialite\\Two\\AbstractProvider');
     return $socialite->buildProvider($providerClass, $config);
 }
 /**
  * Build an OAuth 2 provider instance.
  *
  * @param SocialiteManager $socialite
  * @param string           $providerClass must extend Laravel\Socialite\Two\AbstractProvider
  * @param array            $config
  *
  * @return \Laravel\Socialite\Two\AbstractProvider
  */
 protected function buildOAuth2Provider(SocialiteManager $socialite, $providerClass, $providerName)
 {
     $this->classExtends($providerClass, \Laravel\Socialite\Two\AbstractProvider::class);
     $config = $this->getConfig($providerClass, $providerName);
     $provider = $socialite->buildProvider($providerClass, $config->get());
     $provider->setConfig($config);
     return $provider;
 }
Example #3
0
 /**
  * Autneticat
  *
  * @param $provider
  * @return bool
  */
 public function authenticate($provider)
 {
     $socialUser = $this->social->with($provider)->stateless()->user();
     if (!$socialUser) {
         return false;
     }
     $identity = $this->oauth->findByProviderNameAndId($socialUser->id, $provider);
     if ($identity) {
         $this->oauth->update($identity, ['token' => $socialUser->token]);
         $this->auth->loginUsingId($identity->user_id, true);
         return true;
     }
     $user = $this->user->findByEmail($socialUser->email);
     if (!is_null($user)) {
         $this->oauth->create(['provider_id' => $socialUser->id, 'provider' => $provider, 'user_id' => $user->id, 'token' => $socialUser->token]);
         $this->user->update($user, ['status' => 1]);
         $this->auth->login($user, true);
         return true;
     }
     if (!setting('registration', true)) {
         return false;
     }
     // Just create the user
     $newUser = $this->user->create(['name' => $this->emailToName($socialUser->email), 'email' => $socialUser->email, 'password' => '', 'status' => 1, 'avatar' => $socialUser->avatar]);
     event(new UserCreatedThroughOAuth($newUser));
     $this->oauth->create(['provider_id' => $socialUser->id, 'provider' => $provider, 'user_id' => $newUser->id, 'token' => $socialUser->token]);
     $this->auth->login($newUser, true);
     return true;
 }
 public function register()
 {
     $this->app->singleton('Laravel\\Socialite\\Contracts\\Factory', function ($app) {
         $socialiteManager = new SocialiteManager($app);
         $socialiteManager->extend('teamviewer', function () use($socialiteManager) {
             $config = $this->app['config']['services.teamviewer'];
             return $socialiteManager->buildProvider('RemoteMethod\\Socialite\\TeamViewer\\TeamViewer', $config);
         });
         return $socialiteManager;
     });
 }
Example #5
0
 /**
  * Get GitHub Driver
  *
  * @return \Laravel\Socialite\Two\GithubProvider
  */
 protected function getDriver()
 {
     /** @var \Laravel\Socialite\Two\GithubProvider $driver */
     $driver = $this->socialite->driver('github');
     // Set scopes
     $driver->scopes(['user:email', 'public_repo', 'repo']);
     return $driver;
 }
 /**
  * Get all of the created "drivers".
  *
  * @return array 
  * @static 
  */
 public static function getDrivers()
 {
     //Method inherited from \Illuminate\Support\Manager
     return \Laravel\Socialite\SocialiteManager::getDrivers();
 }
$request = Request::capture();
/*
 * 使用 Symfony Session
 */
$session = new Session();
/*
 * session start
 */
$session->start();
/*
 * 設置 session
 */
$request->setSession($session);
/*
 * Facebook飍數
 */
$config['services.facebook'] = ['client_id' => '900358040081723', 'client_secret' => '06134ad6946069c6457d06688b22c259', 'redirect' => 'http://localhost/test/socialite/index.php/callback'];
/*
 * 將 config, request置入 app
 */
$app['config'] = $config;
$app['request'] = $request;
// 以上為 socalite app所需設定,接下來參考官方文件即可
$socialiteManager = new SocialiteManager($app);
$provider = $socialiteManager->with('facebook')->stateless();
if (strpos($_SERVER['REQUEST_URI'], '/callback') === false) {
    $response = $provider->redirect();
    return $response->send();
}
echo '<pre>';
var_dump((array) $provider->user());
Example #8
0
 /**
  * user method
  *
  * @param $driverName
  *
  * @return \Codex\Addon\Auth\Socialite\User
  */
 protected function user($driverName)
 {
     $driver = $this->social->driver($driverName);
     return $driver->user();
 }