yii2
Yii2 OAuth2 - Ex: Verbraucher facebook OAuth2
Suche…
Erstellen Sie eine App für Facebook-Entwickler
Gehen Sie zu [ https://developers.facebook.com/(((ttps://developers.facebook.com/) und erstellen Sie Ihre App.
Klicken Add product
und wählen Sie Facebook Login
Installieren Sie den yii2-authclient
Bevor Sie diese Erweiterung installieren, müssen Sie yii2-app installieren. In diesem Beispiel verwende ich die Vorlage yii2-basic. Anleitung zur Installation hier .
Lauf
composer require --prefer-dist yiisoft/yii2-authclient
oder hinzufügen
"yiisoft/yii2-authclient": "~2.1.0"
zum require
Abschnitt Ihres composer.json
.
In Config authClientCollection
zu Ihren Konfigurations components
:
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
ist Anwendungs - ID und facebook_client_secret
ist app Geheimnis.
Fügen Sie eine Auth-Aktion hinzu und richten Sie einen Rückruf ein
- Schaltfläche
Login as facebook account
für Ihre Login-Ansicht an:
Bearbeiten Sie site/login.php
im Ordner "views" und fügen Sie diese Zeile zum Inhalt der Seitenanmeldung hinzu:
<?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['site/auth'], 'popupMode' => false, ]) ?>
Oben setzen wir, dass die auth
Aktion in SiteController
den OAuth2-Fluss behandelt.
Jetzt schaffen wir es.
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
}
}
Wir verwenden yii\authclient\AuthAction
um eine URL zu erstellen und zur Facebook-Login-Seite umzuleiten.
Funktion onAuthSuccess
die zum onAuthSuccess
von Benutzerinformationen verwendet wird, onAuthSuccess
bei Ihrer App an.
Füge redirect_url zur Facebook-App-Einstellung hinzu
Wenn Sie prettyUrl in Ihrer yii2-App aktivieren, lautet Ihre Weiterleitung:
http://<base_url>/web/site/auth
Und deaktiviere die hübsche URL:
http://<base_url>/web/index.php?r=site%2Fauth
Beispiel:
Beispiel für die Funktion 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);
}