Buscar..


Crear una aplicación en el desarrollador de facebook

Vaya a la [ https://developers.facebook.com/◆(https://developers.facebook.com/) y cree su aplicación. Interfaz después de crear una nueva aplicación

Haga clic en Add product y elija Facebook Login

Configuración para la aplicación de inicio de sesión de facebook

Instalar yii2-authclient

Antes de instalar esta extensión, debes instalar la aplicación yii2. En este ejemplo, uso la plantilla yii2-basic. Guía para la instalación aquí .

correr

composer require --prefer-dist yiisoft/yii2-authclient

o agregar

"yiisoft/yii2-authclient": "~2.1.0"

a la sección de require de su composer.json .

Agregue config authClientCollection a sus components configuración:

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 es id de aplicación y facebook_client_secret es secreto de aplicación. Info facebook cliente id y cliente secreto

Añadir acción de autenticación y configurar devolución de llamada

  1. Agregar botón Login as facebook account en su vista de inicio de sesión:

Edite site/login.php en la carpeta de vistas, agregue esta línea al contenido del inicio de sesión de la página:

<?= yii\authclient\widgets\AuthChoice::widget([
     'baseAuthUrl' => ['site/auth'],
     'popupMode' => false,
]) ?>

Anteriormente, establecemos que la acción de auth en SiteController manejará el flujo de OAuth2.

Ahora lo creamos.

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
    }
}

Usamos yii\authclient\AuthAction para crear url y redirigir a la página de inicio de sesión de Facebook.

La función onAuthSuccess utilizada para obtener información del usuario, inicie sesión en su aplicación.

Añadir redirect_url a la configuración de la aplicación de Facebook

Si habilitas prettyUrl en tu aplicación yii2, tu redirect_uri será:

http://<base_url>/web/site/auth

Y deshabilitar URL bonita:

http://<base_url>/web/index.php?r=site%2Fauth

Ejemplo:

Configurar redirect_uri

Ejemplo para la función 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow