Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
MarkL
Сообщения: 68
Зарегистрирован: 2017.07.05, 20:37

Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?

Сообщение MarkL »

Ситуация: Использую разрешение AuthClient(https://github.com/yiisoft/yii2-authclient), возникла проблема с виджетом вывода кнопок социальных сетей AuthChoice(https://www.yiiframework.com/extension/ ... authchoice).

Проблема: AuthChoice формирует обратную ссылку для социальных сетей с HTTP-протоколом, а Facebook в рекомендательно-принудительном(http://ipic.su/img/img7/fs/kiss_10kb.1580204644.png) порядке требует HTTPS.

Для формирования URL виджет принимает параметр baseAuthUrl, но в нём можно задать относительный путь к нужному action в качестве массива. Далее эти данные попадают в Url::to() в качестве первого параметра. А вот второй параметр Url::to(), который как раз таки за протокол отвечает, не дают редактировать.

Как решить данную проблему? Возможно, упустил какой-то параметр?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?

Сообщение yiiliveext »

Вы не туда смотрите. Он не формирует обратную ссылку для фейсбук, она задается в настройках приложения фейсбук и она должна быть с протоколом https.
Аватара пользователя
MarkL
Сообщения: 68
Зарегистрирован: 2017.07.05, 20:37

Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?

Сообщение MarkL »

yiiliveext писал(а): 2020.01.28, 13:25 Вы не туда смотрите. Он не формирует обратную ссылку для фейсбук, она задается в настройках приложения фейсбук и она должна быть с протоколом https.
Судя по всему как раз формирует, а Facebook проверяет. Потому что на выходе я получаю yii\authclient\InvalidResponseException с телом в JSON.
После декода:

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

array (
  'error' => 
  array (
    'message' => 'Невозможно загрузить URL: Домен этого URL не включен в список доменов приложения. Чтобы загрузить этот URL, добавьте все домены и поддомены своего приложения в поле «Домены приложения» в настройках вашего приложения.',
    'type' => 'OAuthException',
    'code' => 191,
  ),
)
И сам адрес запроса: GET http://domain.zone/auth/network/auth?authclient=facebook&code=AQCU9I...
Аватара пользователя
MarkL
Сообщения: 68
Зарегистрирован: 2017.07.05, 20:37

Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?

Сообщение MarkL »

Копнул немного глубже. Проблема та же, но в другом месте - \yii\authclient\BaseOAuth::defaultReturnUrl.
Тут формируется returnURL, но также как и в виджете нет возможности задать протокол:
Изображение

P.S. Если вручную отредактировать это в vendor'е, вставить вторым параметром createAbsoluteUrl() "https" - всё отрабатывает и авторизация проходит.
То есть, дело определенно не в Facebook.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?

Сообщение yiiliveext »

Ну раз так, то просто вручную выведите и не парьтесь. Как-то так.

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

<div class="entry__variants">
    <a class="entry__btn entry__btn_facebook" href="<?=Url::to(['/shop/auth', 'authclient' => 'facebook'], 'https')?>">
        <svg class="icon icon-facebook-1"><use xlink:href="/img/sprite.svg#icon-facebook-1"></use></svg><span><?=t('Facebook')?></span>
    </a>
    <a class="entry__btn entry__btn_google" href="<?=Url::to(['/shop/auth', 'authclient' => 'google'], 'https')?>">
        <div class="entry__preview"><img class="entry__pic" src="/img/google.png" alt="" width="30"></div><span><?=t('Google')?></span>
    </a>
</div>    
MarkL писал(а): 2020.01.28, 17:03 Копнул немного глубже. Проблема та же, но в другом месте - \yii\authclient\BaseOAuth::defaultReturnUrl.
Тут формируется returnURL, но также как и в виджете нет возможности задать протокол:
Абсолютный урл создается с текущего (если все правильно настроено), так что он отдаст тот протокол на котором у вас сайт.
pyt_on
Сообщения: 1
Зарегистрирован: 2015.07.08, 13:52

Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?

Сообщение pyt_on »

У меня была аналогичная проблема.
У меня она возникала из-за неправильной настройке сервера. Nginx принимает https запрос и перенапраялет его на http apache.
Для того чтобы информация о https не терялась надо добавить заголовки.

Все описано в статье https://server-gu.ru/x-forwarded-proto-nginx/

Сделал как там написано и все заработало.
Ответить