// 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('/'));
});
Note, that you can use it in symfony2 projects too!
To login using opauth use /login/PROVIDER, or use opauth_default_login
route with provider
parameter.
$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,
),
)
);
By default, users will be looked up by username "provider:uid".
You should extend your user provider to handle OPauth results correctly by implementing OpauthUserProviderInterface
.