yii2
Yii2 OAuth2 - Ex: потребительский facebook OAuth2
Поиск…
Создайте приложение для разработчика facebook
Перейдите на страницу [ https://developers.facebook.com/](https://developers.facebook.com/) и создайте приложение.
Нажмите Add product
и выберите Facebook Login
Установить yii2-authclient
Перед установкой этого расширения вы должны установить yii2-app. В этом примере я использую шаблон yii2-basic. Руководство по установке здесь .
Бежать
composer require --prefer-dist yiisoft/yii2-authclient
или добавить
"yiisoft/yii2-authclient": "~2.1.0"
к разделу require
вашего composer.json
.
Добавьте конфигурацию authClientCollection
в свои 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
- это идентификатор приложения, а facebook_client_secret
- секрет приложения.
Добавить действие auth и настроить обратный вызов
- Кнопка «Добавить»
Login as facebook account
в окно входа в систему:
Отредактируйте site/login.php
в папке views, добавьте строку тезисов к содержимому входа в страницу:
<?= yii\authclient\widgets\AuthChoice::widget([ 'baseAuthUrl' => ['site/auth'], 'popupMode' => false, ]) ?>
Выше мы установили, что действие auth
в SiteController
будет обрабатывать поток OAuth2.
Теперь мы его создаем.
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
}
}
Мы используем yii\authclient\AuthAction
для создания URL- yii\authclient\AuthAction
и перенаправления на страницу входа в facebook.
Функция onAuthSuccess
используется для получения информации о пользователе, войдите в свое приложение.
Добавьте redirect_url в настройку приложения facebook
Если вы включите prettyUrl в своем yii2-приложении, ваша redirect_uri будет:
http://<base_url>/web/site/auth
И отключить довольно URL:
http://<base_url>/web/index.php?r=site%2Fauth
Пример:
Пример для функции 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);
}