icehero / silex-opauth
该包已被放弃,不再维护。未建议替代包。
该包最新版本(dev-master)没有可用的许可信息。
Opauth silex 框架服务提供商。
dev-master
2018-03-04 14:54 UTC
Requires
Requires (Dev)
- opauth/facebook: *
- silex/silex: dev-master
This package is not auto-updated.
Last update: 2020-01-15 20:51:42 UTC
README
简单的事件驱动 silex 扩展
// Configure opauth $app['opauth'] = array( 'login' => '/auth', 'callback' => '/auth/callback', 'config' => array( 'security_salt' => '...your salt...', 'Strategy' => array( 'Facebook' => array( 'app_id' => '...', 'app_secret' => '...' ), ) ) ); // Enable extension $app->register(new OpauthExtension()); // Listen for events $app->on(OpauthExtension::EVENT_ERROR, function($e) { $this->log->error('Auth error: ' . $e['message'], ['response' => $e->getSubject()]); $e->setArgument('result', $this->redirect('/')); }); $app->on(OpauthExtension::EVENT_SUCCESS, function($e) { $response = $e->getSubject(); /* find/create a user, oauth response is in $response and it's already validated! store the user in the session */ $e->setArgument('result', $this->redirect('/')); });
高级的 symfony 安全监听器+提供者
注意,你还可以在 symfony2 项目中使用它!
要使用 opauth 登录,请使用 /login/PROVIDER,或使用带有 provider
参数的 opauth_default_login
路由。
$app->register(new OpauthSilexProvider()); $app->register(new SecurityServiceProvider(), array( 'security.firewalls' => array( 'default' => array( 'pattern' => '^/.*', 'opauth' => array( // 'check_path' => '/login/opauth', //default 'opauth' => [ // 'path' => '/login', //default 'security_salt' => '...your salt...', 'Strategy' => [ // your opauth strategies go here ] ] ), 'anonymous' => true, ), ) );
默认情况下,用户将通过 "provider:uid" 用户名来查找。
你应该扩展你的用户提供者,通过实现 OpauthUserProviderInterface
来正确处理 OPauth 结果。