Jump to content

Авторизация через соцсети на старых версиях движка


Recommended Posts

Встала задача сделать авторизацию через Facebook и Google на вамшоп 1.71.
Как делаю:

1. Выполнил два запроса - из патча 1.99.3 и из патча 1.99.7

2. В create_account.php перенес код из 1.99.3 в той части, который касается авторизации.

3. Добавил правки в админке, чтоб этим можно было управлять.

4. Переписал папку vendor и подключил в aplication_top.php

5. Добавил кнопки в шаблоне

6. Соответственно создал приложения на самих FB и Google.

В результате авторизация через Гугл проходит, все отлично. Через фейсбук - нет. Стопорится на странице create_account, при этом сам фейсбук пишет, что вход выполнен.

Где тут может быть затык?
 

Link to post
Share on other sites
3 часа назад, eugenem сказал:

Встала задача сделать авторизацию через Facebook и Google на вамшоп 1.71.
Как делаю:

1. Выполнил два запроса - из патча 1.99.3 и из патча 1.99.7

2. В create_account.php перенес код из 1.99.3 в той части, который касается авторизации.

3. Добавил правки в админке, чтоб этим можно было управлять.

4. Переписал папку vendor и подключил в aplication_top.php

5. Добавил кнопки в шаблоне

6. Соответственно создал приложения на самих FB и Google.

В результате авторизация через Гугл проходит, все отлично. Через фейсбук - нет. Стопорится на странице create_account, при этом сам фейсбук пишет, что вход выполнен.

Где тут может быть затык?
 

С facebook не возвращается на сайт?!

SSL сертификат установлен на сайте?!

По идее, код для входа через гугл, вконтакте, facebook одинаковый на 99%

В коде наверное вряд ли дело, может на стороне facebook приложение неправильно настроено.

Посмотрите в базе данных магазина, в таблице customers создаётся аккаунт или нет.

Хотя, если нет возврата с facebook, то наверное не создаётся.

Link to post
Share on other sites

Вот как раз возврат на сайт есть как раз куда надо - на страницу создания аккаунта. И фейсбук говорит, что вход произошел.

Link to post
Share on other sites
5 минут назад, eugenem сказал:

Вот как раз возврат на сайт есть как раз куда надо - на страницу создания аккаунта. И фейсбук говорит, что вход произошел.

Так если возвращается в vamshop, что-то пишет?!

Пустую страницу или ещё что?!

Вообще, весь код, что связан с авторизацией, в патчах находится.

Там база данных обновлялась, таблица customers, база данных тоже обновлена была?!

Link to post
Share on other sites

Базу пропатчил запросами из патчей 1.99.3 и 1.99.7. Но там же не касалось таблицы customers, только configuration_group и configuration.
Я что-то упустил?

Link to post
Share on other sites
1 час назад, eugenem сказал:

Базу пропатчил запросами из патчей 1.99.3 и 1.99.7. Но там же не касалось таблицы customers, только configuration_group и configuration.
Я что-то упустил?

Ну да, правильно.

Кстати, там в коде ошибка, может в этом дело.

В /create_account.php у всех авторизация oAuth есть строка, 3 раза встречается:

$homeUrl = FULL_BASE_URL.BASE;

По идее, должно быть:

$homeUrl = HTTP_SERVER.DIR_WS_CATALOG;

Может в этом дело, попробуйте.

Хотя нет, вряд ли в этом.

Попробуйте раскомментировать строки:

//echo var_dump($results);

и

//echo var_dump($userInfo);

 

Там будет видно, по идее, что присылает facebook, если ошибка или ещё что, должно быть видно.

Так а что в таблице customers, не создаётся покупатель новый, не появляется новая запись?!

Link to post
Share on other sites

$homeUrl поправил, но это не влияло, google работал и в первом варианте...

В общем, в таблице customers записей не появляется.
Раскомментировал echo, ничего не выводится. Т.е. получается. что ничего не возвращается от FB?

Еще такой момент, я сейчас сравнил настройки приложения, которые я на другом сайте делал и где все работает.
Так вот там версия приложения 4.0, а на этом, что сейчас создал - 5.0, и выбрать другую нельзя. Это может как-то повлиять?

image.png 

Link to post
Share on other sites
В 31.01.2020 в 11:36, eugenem сказал:

$homeUrl поправил, но это не влияло, google работал и в первом варианте...

В общем, в таблице customers записей не появляется.
Раскомментировал echo, ничего не выводится. Т.е. получается. что ничего не возвращается от FB?

Еще такой момент, я сейчас сравнил настройки приложения, которые я на другом сайте делал и где все работает.
Так вот там версия приложения 4.0, а на этом, что сейчас создал - 5.0, и выбрать другую нельзя. Это может как-то повлиять?

image.png 

А а как хоть это всё выглядит, есть ссылка на магазин?!

Надо выяснять, что присылает facebook, что там, может он присылают ошибку, а не информацию о пользователе.

Может какая-то настройка на facebook не включена.

Link to post
Share on other sites
6 часов назад, eugenem сказал:

Отправил ссылку в ЛС

Здесь вариант - только заниматься отладкой, в create_account.php расставлять метки, теже echo и смотреть, на какой строке останавливается, искать проблемный кусок кода.

if (isset ($_GET['social_login']) && ($_GET['social_login'] == 'fb')) {
...
}

Например закомментировать редирект:

			header('Location: ' . filter_var($redirectUrl, FILTER_SANITIZE_URL));

и наоборот, там уже есть вывода отладочной информации, echo var_dump ..., вот эти строки, наоборот, раскомментировать.

P.S. Попробовал сейчас на vamshop.ru вход через facebook - всё работает, т.е. код актуальный, по идее.

Link to post
Share on other sites

В общем, заработало... Прошелся по всему коду, затык был на на получении $userInfo.
Оказалось, что на сервере отключена allow_url_fopen.

Такой еще вопрос. В коде имя и фамилия берутся из одного значения - полного имени. В итоге у нас получается, к примеру:
"Имя: Вася Пупкин"
"Фамилия: Вася Пупкин"
Наверно есть смысл, все же в имя писать имя, а в фамилию - фамилию? Эти данные ведь передаются в том числе отдельными значениями.

Link to post
Share on other sites
44 минуты назад, eugenem сказал:

В общем, заработало... Прошелся по всему коду, затык был на на получении $userInfo.
Оказалось, что на сервере отключена allow_url_fopen.

Такой еще вопрос. В коде имя и фамилия берутся из одного значения - полного имени. В итоге у нас получается, к примеру:
"Имя: Вася Пупкин"
"Фамилия: Вася Пупкин"
Наверно есть смысл, все же в имя писать имя, а в фамилию - фамилию? Эти данные ведь передаются в том числе отдельными значениями.

Хорошо, спасибо, что сообщили, в чём было дело.

Можно, просто у меня например не запрашивается фамилимя, и поля фамилия нет вообще при оформлении заказа.

Чем меньше данных и проще оформление - тем лучше.

В /create_account.php смотрите что там в $userinfo через echo и правьте затем код:

	$firstname = html_entity_decode($userInfo['name']);
	$secondname = ''; 
	$lastname = html_entity_decode($userInfo['name']);
	$fullname = html_entity_decode($userInfo['name']);

т.е. если там есть в userinfo отдельно имя и отдельно фамилия, то просто исправьте этот код на что-то вроде:

	$firstname = html_entity_decode($userInfo['firstname']);
	$secondname = ''; 
	$lastname = html_entity_decode($userInfo['lastname']);
	$fullname = html_entity_decode($userInfo['fullname']);

Я просто уже точно и не помню, отдаёт facebook имя и фамилию отдельными полями или сразу отдаёт имя и фамилию.

 

Link to post
Share on other sites

Да, я это сделал, конечно. Думаю, неплохо бы в следующей версии поправить, а то как-то не комильфо.

Link to post
Share on other sites
3 минуты назад, eugenem сказал:

Да, я это сделал, конечно. Думаю, неплохо бы в следующей версии поправить, а то как-то не комильфо.

Так а как должно быть, покажите пример кода для гугла, facebook

Добавлю правку в код по умолчанию.

Link to post
Share on other sites

FB:
 

	$firstname = html_entity_decode($userInfo['first_name']);
	$lastname = html_entity_decode($userInfo['last_name']);

Google:

	$firstname = html_entity_decode($userProfile['given_name']);
	$lastname = html_entity_decode($userProfile['family_name']);

 

Link to post
Share on other sites
21 минуту назад, eugenem сказал:

FB:
 


	$firstname = html_entity_decode($userInfo['first_name']);
	$lastname = html_entity_decode($userInfo['last_name']);

Google:


	$firstname = html_entity_decode($userProfile['given_name']);
	$lastname = html_entity_decode($userProfile['family_name']);

 

Спасибо, добавил правку в текущий код.

Link to post
Share on other sites
  • 2 months later...

В текущем коде ошибка в файле create_account.php в строке 569, для ФейсБука:

$lastname = html_entity_decode($userInfo['last_name']);

$lastname - на конце не латинская буква e, а что-то другое
Прямо диверсия какая-то. Полночи потерял, API уже начал читать вовсю. Думал фамилия дополнительных привилегий требует.

И для Гугля тоже самое, но в $firstname, в строке 785

Это в патче 1.99.13 до 1.99.14

Link to post
Share on other sites
support
5 часов назад, shaklov сказал:

В текущем коде ошибка в файле create_account.php в строке 569, для ФейсБука:

$lastname = html_entity_decode($userInfo['last_name']);

$lastname - на конце не латинская буква e, а что-то другое
Прямо диверсия какая-то. Полночи потерял, API уже начал читать вовсю. Думал фамилия дополнительных привилегий требует.

И для Гугля тоже самое, но в $firstname, в строке 785

Это в патче 1.99.13 до 1.99.14

Спасибо, исправил.

Да, неприятный глюк.

 

Link to post
Share on other sites
Роман_DD

В текущем коде можно авторизоватья и не вводить имя и фамилию при оформлении, Получается с пустыми полями офомрить заказ, это неправильно. Не знаю исправили или нет но в 14 версии было так.

Link to post
Share on other sites
support
6 часов назад, Роман_DD сказал:

В текущем коде можно авторизоватья и не вводить имя и фамилию при оформлении, Получается с пустыми полями офомрить заказ, это неправильно. Не знаю исправили или нет но в 14 версии было так.

Добавил в ошибки, буду проверять - 

 

Link to post
Share on other sites
×
×
  • Create New...