Поиск…


Создайте приложение для разработчика facebook

Перейдите на страницу [ https://developers.facebook.com/](https://developers.facebook.com/) и создайте приложение. Интерфейс после создания нового приложения

Нажмите Add product и выберите Facebook Login

Настройка для входа в facebook

Установить 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 - секрет приложения. Инфо идентификатор клиента facebook и секрет клиента

Добавить действие auth и настроить обратный вызов

  1. Кнопка «Добавить» 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

Пример:

Настройка redirect_uri

Пример для функции 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);
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow