eugenem 11 Posted January 30, 2020 Report Share Posted January 30, 2020 Встала задача сделать авторизацию через 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
support 447 Posted January 30, 2020 Report Share Posted January 30, 2020 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
eugenem 11 Posted January 30, 2020 Author Report Share Posted January 30, 2020 Вот как раз возврат на сайт есть как раз куда надо - на страницу создания аккаунта. И фейсбук говорит, что вход произошел. Link to post Share on other sites
support 447 Posted January 30, 2020 Report Share Posted January 30, 2020 5 минут назад, eugenem сказал: Вот как раз возврат на сайт есть как раз куда надо - на страницу создания аккаунта. И фейсбук говорит, что вход произошел. Так если возвращается в vamshop, что-то пишет?! Пустую страницу или ещё что?! Вообще, весь код, что связан с авторизацией, в патчах находится. Там база данных обновлялась, таблица customers, база данных тоже обновлена была?! Link to post Share on other sites
eugenem 11 Posted January 30, 2020 Author Report Share Posted January 30, 2020 Базу пропатчил запросами из патчей 1.99.3 и 1.99.7. Но там же не касалось таблицы customers, только configuration_group и configuration. Я что-то упустил? Link to post Share on other sites
support 447 Posted January 30, 2020 Report Share Posted January 30, 2020 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
eugenem 11 Posted January 31, 2020 Author Report Share Posted January 31, 2020 $homeUrl поправил, но это не влияло, google работал и в первом варианте... В общем, в таблице customers записей не появляется. Раскомментировал echo, ничего не выводится. Т.е. получается. что ничего не возвращается от FB? Еще такой момент, я сейчас сравнил настройки приложения, которые я на другом сайте делал и где все работает. Так вот там версия приложения 4.0, а на этом, что сейчас создал - 5.0, и выбрать другую нельзя. Это может как-то повлиять? Link to post Share on other sites
support 447 Posted February 1, 2020 Report Share Posted February 1, 2020 В 31.01.2020 в 11:36, eugenem сказал: $homeUrl поправил, но это не влияло, google работал и в первом варианте... В общем, в таблице customers записей не появляется. Раскомментировал echo, ничего не выводится. Т.е. получается. что ничего не возвращается от FB? Еще такой момент, я сейчас сравнил настройки приложения, которые я на другом сайте делал и где все работает. Так вот там версия приложения 4.0, а на этом, что сейчас создал - 5.0, и выбрать другую нельзя. Это может как-то повлиять? А а как хоть это всё выглядит, есть ссылка на магазин?! Надо выяснять, что присылает facebook, что там, может он присылают ошибку, а не информацию о пользователе. Может какая-то настройка на facebook не включена. Link to post Share on other sites
eugenem 11 Posted February 2, 2020 Author Report Share Posted February 2, 2020 Отправил ссылку в ЛС Link to post Share on other sites
support 447 Posted February 2, 2020 Report Share Posted February 2, 2020 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
eugenem 11 Posted February 3, 2020 Author Report Share Posted February 3, 2020 В общем, заработало... Прошелся по всему коду, затык был на на получении $userInfo. Оказалось, что на сервере отключена allow_url_fopen. Такой еще вопрос. В коде имя и фамилия берутся из одного значения - полного имени. В итоге у нас получается, к примеру: "Имя: Вася Пупкин" "Фамилия: Вася Пупкин" Наверно есть смысл, все же в имя писать имя, а в фамилию - фамилию? Эти данные ведь передаются в том числе отдельными значениями. Link to post Share on other sites
support 447 Posted February 3, 2020 Report Share Posted February 3, 2020 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
eugenem 11 Posted February 3, 2020 Author Report Share Posted February 3, 2020 Да, я это сделал, конечно. Думаю, неплохо бы в следующей версии поправить, а то как-то не комильфо. Link to post Share on other sites
support 447 Posted February 3, 2020 Report Share Posted February 3, 2020 3 минуты назад, eugenem сказал: Да, я это сделал, конечно. Думаю, неплохо бы в следующей версии поправить, а то как-то не комильфо. Так а как должно быть, покажите пример кода для гугла, facebook Добавлю правку в код по умолчанию. Link to post Share on other sites
eugenem 11 Posted February 3, 2020 Author Report Share Posted February 3, 2020 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
support 447 Posted February 3, 2020 Report Share Posted February 3, 2020 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
shaklov 63 Posted April 5, 2020 Report Share Posted April 5, 2020 В текущем коде ошибка в файле 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 447 Posted April 5, 2020 Report Share Posted April 5, 2020 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 2 Posted April 10, 2020 Report Share Posted April 10, 2020 В текущем коде можно авторизоватья и не вводить имя и фамилию при оформлении, Получается с пустыми полями офомрить заказ, это неправильно. Не знаю исправили или нет но в 14 версии было так. Link to post Share on other sites
support 447 Posted April 10, 2020 Report Share Posted April 10, 2020 6 часов назад, Роман_DD сказал: В текущем коде можно авторизоватья и не вводить имя и фамилию при оформлении, Получается с пустыми полями офомрить заказ, это неправильно. Не знаю исправили или нет но в 14 версии было так. Добавил в ошибки, буду проверять - Link to post Share on other sites
Recommended Posts