yii2
Yii2 OAuth2 - Ex: consommateur facebook OAuth2
Recherche…
Créer une application sur un développeur facebook
Allez dans le [ https://developers.facebook.com/](https://developers.facebook.com/) et créez votre application.
Cliquez sur Add product
et choisissez Facebook Login
Installez yii2-authclient
Avant d'installer cette extension, vous devez installer yii2-app. Dans cet exemple, j'utilise le modèle yii2-basic. Guide pour l'installation ici .
Courir
composer require --prefer-dist yiisoft/yii2-authclient
ou ajouter
"yiisoft/yii2-authclient": "~2.1.0"
à la section require
de votre composer.json
.
Ajoutez config authClientCollection
à vos components
configuration:
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
est l'identifiant de l'application et facebook_client_secret
est le secret de l'application.
Ajouter une action d'authentification et configurer le rappel
- Ajouter un bouton
Login as facebook account
à votre vue de connexion:
Modifier le site/login.php
dans le dossier des vues, ajouter cette ligne au contenu de la page de connexion:
<?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['site/auth'], 'popupMode' => false, ]) ?>
Au- dessus, nous avons mis que auth
action SiteController
sera handler flux OAuth2.
Maintenant, nous le créons.
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
}
}
Nous utilisons yii\authclient\AuthAction
pour créer une URL et rediriger vers la page de connexion facebook.
Fonction onAuthSuccess
utilisée pour obtenir des informations sur l'utilisateur, connectez-vous à votre application.
Ajouter redirect_url à la configuration de l'application facebook
Si vous activez prettyUrl dans votre application yii2, votre redirect_uri sera:
http://<base_url>/web/site/auth
Et désactivez la jolie URL:
http://<base_url>/web/index.php?r=site%2Fauth
Exemple:
Exemple pour la fonction 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);
}