Авторизация с помощью facebook
-
Нужно сделать авторизацию пользователей на wordpress через соц-сеть facebook.
Вопрос в том как это правильно сделать.
Как я понимаю, авторизация работает по принципу, пользователь заходит на сайт, нажимает авторизироваться с помощью facebook, далее, сайт получает имя, фамилию и емайл пользователя которые указанны в фейсбуке и на основе этих данных, запускает автоматическую регистрацию, т.е создание пользователя в wordpress.
Далее не понятно что нужно делать ? К примеру как отличить потом тех кто их фейсбука и тех кто через емайл зарегистрировался и нужно ли это ? При регистрации через фейсбук как я понял письмо подтверждения отсылать не нужно — типа подвердите ваш емайл.
Просто интересно если кто-то уже огранизовал подобный вариант, как он работает ?
Плагины и.т.д — не предлагать, нужна одна соц-сеть и простое решение.
-
wildapache, привет.
Вопрос в том как это правильно сделать.
Правильным было бы использовать готовое решение, и на то есть ряд причин.
Как я понимаю, авторизация работает по принципу, пользователь заходит на сайт, нажимает авторизироваться с помощью facebook, далее, сайт получает имя, фамилию и емайл пользователя которые указанны в фейсбуке
Вы слишком упростили процесс.
запускает автоматическую регистрацию, т.е создание пользователя в wordpress.
Далее не понятно что нужно делать ? К примеру как отличить потом тех кто их фейсбука и тех кто через емайл зарегистрировался и нужно ли это ? При регистрации через <…>.
У вас получилась какая-то каша из задачи. Если я правильно понял, то в первую очередь вы хотите организовать регистрацию на сайте. Регистрация на сайте должна быть как штатная, силами движка, так и через соцсеть. Далее, вы сами не знаете, нужно ли как-то отличать пользователей по типу регистрации — почему?
Как видите, простым решением тут пока и не пахнет.
Мне нужно понять общую логику работы, когда на сайте есть обычная регистрация и регистрация через facebook. С обычной всё ясно, пользователь вводит данные сам, после чего на его почту приходит письмо чтобы он подтвердил регистрацию.
А вот с фейсбук как ? К примеру он нажимает авторизироваться через фейсбук, далее после того как юзер разрешает доступ, функция возвращает его имя, почту, далее нужно как я понял, на это имя и почту нужно создать аккаунт (типа авторегистрации без подтверждения, так как пользователь уже дал доступ к фб), т.е на выходе мы получаем аккаунт в самом вордпрессе с данными из фейсбука !
Потом к примеру, не ясно, если пользователь выйдет из аккаунта в вордпресс, и потом снова нажмёт авторизироваться с помощью фейсбука что должно происходить ? Типа поиск такого емайла в базе и если есть — давать ок на вход (без ввода пароля) ?
Готовые решения мне не нужны как и эти грамоздкие плагины, в которых ради хайпа понапихивали что надо и что не надо.
wildapache,
Мне нужно понять общую логику работы, когда на сайте есть обычная регистрация и регистрация через facebook.
Посетитель хочет зарегистрироваться на сайте через ФБ, для этого он даёт доступ сайту к своему профилю в соцсети, и на основе этих данных происходит регистрация на сайте под управлением WordPress.
Чтобы всё это работало, нужно созданное приложение в соцсети (раздел для разработчиков, там всё довольно стандартно) со своим уникальным идентификатором и ключом (генерируются при создании приложения —
App IDиApp Secret, если правильно помню), которые затем передаются обработчику. Обработчик — это либо готовый плагин, автоматизирующий процесс регистрации/аутентификации на сайте, либо ваш кастомный код, задающий аналогичную функциональность. Обработчик, грубо говоря, выступает посредником месду сайтом и соцсетью, и именно он выбирает те данные, по которым затем будет происходить регистрация пользователя.Обычно тем пользователям, что регистрировались через соцсети, пишутся дополнительные мета-данные, явно указывающие на регистрацию через соцсеть, например. В общем, это либо автор плагина продумывает, либо вы сами, если пишете такое решение самостоятельно. Помимо этого ещё стоит помнить про идентификатор пользователей в соцсети, которые также можно получать через API и сохранять в мета-данных.
Аутентификация пользователя на сайте WordPress через соцсеть происходит с помощью протокола OAuth 2.0. Пользователь, условно, жмёт кнопку «Зайти через ФБ» (инициация процесса аутентификации), происходит мгновенный переход на страницу соцсети для подтверждения/разрешения доступа к некоторой информации пользователя из анкеты (почта, имя и фамилия, етц.). Если пользователь разрешил доступ, приложением на стороне соцсети генерируется временный ключ/токен доступа (
Access Token), нужный для доступа к данным пользователя (Facebook Graph API) в соцсети (почта, имя и фамилия, етц.). Если доступ пользователь не разрешил, то процесс заканчивается и возвращается сообщение об ошибке. После получения токена начинается процесс проверки существования на сайте WordPress пользователя с такой почтой/ID. Если данные не найдены, то происходит регистрация пользователя. Если данные нашлись (почта/ID), то выполняется автоматический вход пользователя на сайт без нужды ввода пароля. На этом процесс аутентификации завершается.Надеюсь, вопрос прояснился в общих чертах.
Готовые решения мне не нужны как и эти грамоздкие плагины, в которых ради хайпа понапихивали что надо и что не надо.
Ничего не имею против, но требования к вашему решению должны быть довольно высоки, и в первую очередь это должны быть требования к безопасности реализуемой функциональности. Ошибиться тут легко, а цена ошибки может быть довольно высока. Готовые плагины уже сколько-то лет набивают эти шишки за вас.
Обычно тем пользователям, что регистрировались через соцсети, пишутся дополнительные мета-данные, явно указывающие на регистрацию через соцсеть, например
Да это легко, в принципе, просто можно создать поле типа reg_type и заносить туда fb — если это через фейсбук
В общем смысле понял, мне нужно сначала сделать — чтобы можно было получать данные из fb, далее уже дело техники.
По поводу советов, я уже насмотрелся на плагины не последнего рейтинга, спасибо, но, я лучше сам. Единственное что будет сложно — так это реализация правильной логики работы, хотя кажется что в принципе и не сложно, получил данные — автозарегистрировал пользователя и делов-то, но, потом появляются мелочи типа, а если пользователь выйдет и потом опять нажмёт на авторизацию через fb : ) тут два варианта, можно либо показать сообщение мол пароль и логин у тебя на почте, либо авторизировать без вопросов потому что такой емайл уже есть в бд юзеров, а получить его мы можем только если пользователь разрешил авторизацию через-соц сеть, по этому и ввода пароля не нужно. (Это как примерно представляю) как это будет работать в реализации, конечно будет не без подводных камней. Главное что будет без всего того хлама что в некоторых платных и бесплатных плагинах.
wildapache, логика — это не проблема, даже если с ходу не получится всё и сразу. Больше внимания уделяйте вопросам безопасности. Именно тут многие и ошибаются.
Главное что будет без всего того хлама что в некоторых платных и бесплатных плагинах.
Ну тут 100% понимания, 0% осуждения.
По поводу безопасности вы имеете ввиду сторону wordpress как я понял ? То есть именно — действия после того как «мы» получаем данные из facebook ?
wildapache,
По поводу безопасности вы имеете ввиду сторону wordpress как я понял ?
Всё верно. Погуглите у аналогичных решений для WordPress «authentication bypass», местами вы либо PoC увидите, либо статью с разбором ошибки. Таким нехитрым способом как раз увидите те грабли, на которые наступали разработчики до вас.
Не понял что именно нужно гуглить ? На какой стороне ошибка ? WordPress или в предлагаемом фейсбуке коде-авторизации ? Если — это ошибка именно приватных авторов-разработчиков, то это решаемо и естесвенно всё будет протестированно.
Для ответа на тему необходимо авторизоваться.