yii2
Yii2 OAuth2 - Ex: konsument facebook OAuth2
Sök…
Skapa en app på facebookutvecklare
Gå till [ https://developers.facebook.com/achte(https://developers.facebook.com/) och skapa din app.
Klicka på Add product
och välj Facebook Login
Installera yii2-authentclient
Innan du installerar tillägget måste du installera yii2-app. I det här exemplet använder jag yii2-basic mall. Guide för installation här .
Springa
composer require --prefer-dist yiisoft/yii2-authclient
eller lägg till
"yiisoft/yii2-authclient": "~2.1.0"
till det require
avsnittet i din composer.json
.
Lägg config authClientCollection
dina config 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
är applikations-id och facebook_client_secret
är apphemligt.
Lägg till autorisation och konfigurera återuppringning
- Lägg till knapp
Login as facebook account
i din inloggningsvy:
Redigera site/login.php
i visningsmappen, lägg till avhandlingens rad i innehållet i sidanloggningen:
<?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['site/auth'], 'popupMode' => false, ]) ?>
Ovanstående sätter vi att auth
åtgärd i SiteController
kommer att hantera OAuth2-flöde.
Nu skapar vi det.
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
}
}
Vi använder yii\authclient\AuthAction
för att skapa url och omdirigera till facebook inloggningssida.
Funktion onAuthSuccess
används för att få användarinformation, logga in på din app.
Lägg till omdirigering_url till inställningen för Facebook-appen
Om du aktiverar prettyUrl i din yii2-app kommer din omdirigering_uri att vara:
http://<base_url>/web/site/auth
Och inaktivera ganska url:
http://<base_url>/web/index.php?r=site%2Fauth
Exempel:
Exempel för onAuthSuccess-funktion
/**
* @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);
}