yii2
Yii2 OAuth2 - Ej: consumidor facebook OAuth2
Buscar..
Crear una aplicación en el desarrollador de facebook
Vaya a la [ https://developers.facebook.com/◆(https://developers.facebook.com/) y cree su aplicación.
Haga clic en Add product
y elija Facebook Login
Instalar yii2-authclient
Antes de instalar esta extensión, debes instalar la aplicación yii2. En este ejemplo, uso la plantilla yii2-basic. Guía para la instalación aquí .
correr
composer require --prefer-dist yiisoft/yii2-authclient
o agregar
"yiisoft/yii2-authclient": "~2.1.0"
a la sección de require
de su composer.json
.
Agregue config authClientCollection
a sus components
configuración:
return [
'components' => [
'authClientCollection' => [
'class' => 'yii\authclient\Collection',
'clients' => [
'facebook' => [
'class' => 'yii\authclient\clients\Facebook',
'clientId' => 'facebook_client_id',
'clientSecret' => 'facebook_client_secret',
],
],
]
],
// ...
];
facebook_client_id
es id de aplicación y facebook_client_secret
es secreto de aplicación.
Añadir acción de autenticación y configurar devolución de llamada
- Agregar botón
Login as facebook account
en su vista de inicio de sesión:
Edite site/login.php
en la carpeta de vistas, agregue esta línea al contenido del inicio de sesión de la página:
<?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['site/auth'], 'popupMode' => false, ]) ?>
Anteriormente, establecemos que la acción de auth
en SiteController
manejará el flujo de OAuth2.
Ahora lo creamos.
class SiteController extends Controller
{
public function actions()
{
return [
'auth' => [
'class' => 'yii\authclient\AuthAction',
'successCallback' => [$this, 'onAuthSuccess'],
],
];
}
public function onAuthSuccess($client)
{
// do many stuff here, save user info to your app database
}
}
Usamos yii\authclient\AuthAction
para crear url y redirigir a la página de inicio de sesión de Facebook.
La función onAuthSuccess
utilizada para obtener información del usuario, inicie sesión en su aplicación.
Añadir redirect_url a la configuración de la aplicación de Facebook
Si habilitas prettyUrl en tu aplicación yii2, tu redirect_uri será:
http://<base_url>/web/site/auth
Y deshabilitar URL bonita:
http://<base_url>/web/index.php?r=site%2Fauth
Ejemplo:
Ejemplo para la función onAuthSuccess
/**
* @param $client ClientInterface
*/
public function onAuthSuccess($client)
{
//Get user info
/** @var array $attributes */
$attributes = $client->getUserAttributes();
$email = ArrayHelper::getValue($attributes, 'email'); //email info
$id = ArrayHelper::getValue($attributes, 'id'); // id facebook user
$name = ArrayHelper::getValue($attributes, 'name'); // name facebook account
//Login user
//For demo, I will login with admin/admin default account
$admin = User::findByUsername('admin');
Yii::$app->user->login($admin);
}