yii2
Yii2 OAuth2 - Es: consumer facebook OAuth2
Ricerca…
Crea un'app sullo sviluppatore di Facebook
Vai a [ https://developers.facebook.com/](https://developers.facebook.com/) e crea la tua app.
Fai clic su Add product
e seleziona Facebook Login
Installa yii2-authclient
Prima di installare questa estensione, è necessario installare yii2-app. In questo esempio, utilizzo il modello yii2-basic. Guida per l'installazione qui .
Correre
composer require --prefer-dist yiisoft/yii2-authclient
o aggiungi
"yiisoft/yii2-authclient": "~2.1.0"
alla sezione require
del tuo composer.json
.
Aggiungi config authClientCollection
ai tuoi components
configurazione:
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
è application id e facebook_client_secret
è app secret.
Aggiungi azione auth e imposta callback
- Aggiungi pulsante
Login as facebook account
alla tua vista di accesso:
Modifica site/login.php
nella cartella delle visualizzazioni, aggiungi la linea di tesi al contenuto dell'accesso alla pagina:
<?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['site/auth'], 'popupMode' => false, ]) ?>
Sopra, impostiamo che l'azione di auth
in SiteController
gestirà il flusso di OAuth2.
Ora lo creiamo.
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
}
}
Utilizziamo yii\authclient\AuthAction
per creare URL e reindirizzare alla pagina di accesso di Facebook.
Funzione onAuthSuccess
utilizzata per ottenere informazioni utente, accedere alla tua app.
Aggiungi redirect_url alle impostazioni dell'app Facebook
Se abiliti prettyUrl nella tua app yii2, il tuo redirect_uri sarà:
http://<base_url>/web/site/auth
E disabilita l'URL carino:
http://<base_url>/web/index.php?r=site%2Fauth
Esempio:
Esempio per la funzione 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);
}