/** * 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; }
/** * 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; }); }
/** * 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());
/** * user method * * @param $driverName * * @return \Codex\Addon\Auth\Socialite\User */ protected function user($driverName) { $driver = $this->social->driver($driverName); return $driver->user(); }