Ситуация: Использую разрешение 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(), который как раз таки за протокол отвечает, не дают редактировать.
Как решить данную проблему? Возможно, упустил какой-то параметр?
Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?
Вы не туда смотрите. Он не формирует обратную ссылку для фейсбук, она задается в настройках приложения фейсбук и она должна быть с протоколом https.
Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?
Судя по всему как раз формирует, а Facebook проверяет. Потому что на выходе я получаю yii\authclient\InvalidResponseException с телом в JSON.yiiliveext писал(а): ↑2020.01.28, 13:25 Вы не туда смотрите. Он не формирует обратную ссылку для фейсбук, она задается в настройках приложения фейсбук и она должна быть с протоколом https.
После декода:
Код: Выделить всё
array (
'error' =>
array (
'message' => 'Невозможно загрузить URL: Домен этого URL не включен в список доменов приложения. Чтобы загрузить этот URL, добавьте все домены и поддомены своего приложения в поле «Домены приложения» в настройках вашего приложения.',
'type' => 'OAuthException',
'code' => 191,
),
)
Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?
Копнул немного глубже. Проблема та же, но в другом месте - \yii\authclient\BaseOAuth::defaultReturnUrl.
Тут формируется returnURL, но также как и в виджете нет возможности задать протокол:
P.S. Если вручную отредактировать это в vendor'е, вставить вторым параметром createAbsoluteUrl() "https" - всё отрабатывает и авторизация проходит.
То есть, дело определенно не в Facebook.
Тут формируется returnURL, но также как и в виджете нет возможности задать протокол:
P.S. Если вручную отредактировать это в vendor'е, вставить вторым параметром createAbsoluteUrl() "https" - всё отрабатывает и авторизация проходит.
То есть, дело определенно не в Facebook.
-
- Сообщения: 910
- Зарегистрирован: 2019.08.13, 01:49
Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?
Ну раз так, то просто вручную выведите и не парьтесь. Как-то так.
Код: Выделить всё
<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>
Абсолютный урл создается с текущего (если все правильно настроено), так что он отдаст тот протокол на котором у вас сайт.
Re: Как выставить HTTPS-протокол в виджете AuthChoice расширения AuthClient от Yii2?
У меня была аналогичная проблема.
У меня она возникала из-за неправильной настройке сервера. Nginx принимает https запрос и перенапраялет его на http apache.
Для того чтобы информация о https не терялась надо добавить заголовки.
Все описано в статье https://server-gu.ru/x-forwarded-proto-nginx/
Сделал как там написано и все заработало.
У меня она возникала из-за неправильной настройке сервера. Nginx принимает https запрос и перенапраялет его на http apache.
Для того чтобы информация о https не терялась надо добавить заголовки.
Все описано в статье https://server-gu.ru/x-forwarded-proto-nginx/
Сделал как там написано и все заработало.