Как правильно добавить виджет авторизации?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Fin
Сообщения: 13
Зарегистрирован: 2017.06.18, 13:28

Как правильно добавить виджет авторизации?

Сообщение Fin »

Пробовал добавить виджет ulogin двумя способами.
1 - подключить как приложение, адаптированное для yii с github

На локальном сервере при попытке авторизоваться выдаётся такая ошибка:
Изображение
Думаю, пользователям врятли захочется указывать свой тел. и после того, как во view был убран этот параметр /*ULogin::F_PHONE,
стала открываться просто страница 404

На сервере хостинга при попытке авторизации та же ошибка 404 с адресом строки http://домен/frontend/web/index.php?r=sign%2Fulogin

2. Также виджет ulogin установлен с сайта http://www.ulogin.ru/
На сайте рекомендации такие: Изображение

Верхний скрипт вставлен во view:

Код: Выделить всё

<?php
use yii\helpers\Html;
use yii\widgets\ListView;
use yii\widgets\Menu;
use yii\widgets\Pjax;
use rmrevin\yii\ulogin\ULogin;

/* @var $this yii\web\View */
$title = $category === null ? 'AliExpress' : $category->title;
$this->title = Html::encode($title);
?>

<h1><?= Html::encode($title) ?></h1>

<?php

echo ULogin::widget([
    // widget look'n'feel
    'display' => ULogin::D_PANEL,

    // required fields
    'fields' => [ULogin::F_FIRST_NAME, ULogin::F_LAST_NAME, ULogin::F_EMAIL, /*ULogin::F_PHONE,*/ ULogin::F_CITY, ULogin::F_COUNTRY, ULogin::F_PHOTO_BIG],

    // optional fields
    'optional' => [ULogin::F_BDATE],

    // login providers
    'providers' => [ULogin::P_VKONTAKTE, ULogin::P_FACEBOOK, ULogin::P_TWITTER, ULogin::P_GOOGLE],

    // login providers that are shown when user clicks on additonal providers button
    'hidden' => [],

    // where to should ULogin redirect users after successful login
    'redirectUri' => ['sign/ulogin'],

    // optional params (can be ommited)
    // force widget language (autodetect by default)
    'language' => ULogin::L_RU,

    // providers sorting ('relevant' by default)
    'sortProviders' => ULogin::S_RELEVANT,

    // verify users' email (disabled by default)
    'verifyEmail' => '0',

    // mobile buttons style (enabled by default)
    'mobileButtons' => '1',
]);

?>



<script src="//ulogin.ru/js/ulogin.js"></script>
<a href="#" id="uLogin" data-ulogin="display=window;theme=classic;fields=first_name,last_name;providers=;hidden=;redirect_uri=http%3A%2F%2Fshop.local;mobilebuttons=0;"><img src="https://ulogin.ru/img/button.png?version=img.2.0.0" width=187 height=30 alt="МультиВход"/></a>



<div class="container-fluid">
  <div class="row">
      <div class="col-xs-4">
          <?= Menu::widget([
              'items' => $menuItems,
              'options' => [
                  'class' => 'menu',
              ],
          ]) ?>
      </div>
      <div class="col-xs-8">
          <?= ListView::widget([
              'dataProvider' => $productsDataProvider,
              'itemView' => '_product',
          ]) ?>
      </div>
  </div>
</div>

<?php Pjax::begin([
'enablePushState'=>false,
  ]); ?>

  <a href="/shop.local/About" class='btn btn-xs btn-primary'>жми сюда</a>

<?php Pjax::end();  ?></div>


<code class="php"><?php Pjax::begin(); ?>
    <?= Html::a(
        'Показать время',
        ['/example/pjax/pjax-example-3?action=time'],
        ['class' => 'btn btn-lg btn-primary']
    ) ?>
    <?= Html::a(
        'Показать дату',
        ['/example/pjax/pjax-example-3?action=date'],
        ['class' => 'btn btn-lg btn-success']
    ) ?>
    <p>Ответ сервера: <?= $data ?></p>
<?php Pjax::end(); ?>
</code>
а вот нижний непонятно где разместить нужно?

Сейчас, если пробовать авторизацию, то выводится такая ошибка
Изображение и почему-то с адреса хостинга http://домен/frontend/web/index.php меня перебрасывает на адрес http://shop.local/ т.е. домен, указанный в OpenServer
В yii -debag, которая появляется здесь уже следующее:
Изображение

Также пробовал на сайте добавить виджет и сайт через личный кабинет. Виджет на сайт добавился со скриптом

Код: Выделить всё

<script src="//ulogin.ru/js/ulogin.js"></script><div id="uLogin_a682444a" data-uloginid="a682444a"></div>
но ошибка 400 (Unable to verify your data submission.) вылетает даже без открытия окна значков соцсетей.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как правильно добавить виджет авторизации?

Сообщение ElisDN »

Против 400 Bad Request отключают CSRF-проверку в целевом контроллере.
Fin
Сообщения: 13
Зарегистрирован: 2017.06.18, 13:28

Re: Как правильно добавить виджет авторизации?

Сообщение Fin »

В SiteController (fronted) был добавлен следующий код:

Код: Выделить всё

public function beforeAction($action)
{
if (in_array($action->id, ['index'])) {
$this->enableCsrfValidation = false;
}
return parent::beforeAction($action);
}
Но это ничего не изменило.

В шаблоне \views\layouts\main.php и в тегах head была строка кода:

Код: Выделить всё

<?= Html::csrfMetaTags() ?>
Ответить