• Нужно сделать авторизацию пользователей на wordpress через соц-сеть facebook.

    Вопрос в том как это правильно сделать.

    Как я понимаю, авторизация работает по принципу, пользователь заходит на сайт, нажимает авторизироваться с помощью facebook, далее, сайт получает имя, фамилию и емайл пользователя которые указанны в фейсбуке и на основе этих данных, запускает автоматическую регистрацию, т.е создание пользователя в wordpress.

    Далее не понятно что нужно делать ? К примеру как отличить потом тех кто их фейсбука и тех кто через емайл зарегистрировался и нужно ли это ? При регистрации через фейсбук как я понял письмо подтверждения отсылать не нужно — типа подвердите ваш емайл.

    Просто интересно если кто-то уже огранизовал подобный вариант, как он работает ?

    Плагины и.т.д — не предлагать, нужна одна соц-сеть и простое решение.

Просмотр 8 ответов — с 1 по 8 (всего 8)
  • 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 или в предлагаемом фейсбуке коде-авторизации ? Если — это ошибка именно приватных авторов-разработчиков, то это решаемо и естесвенно всё будет протестированно.

Просмотр 8 ответов — с 1 по 8 (всего 8)

Для ответа на тему необходимо авторизоваться.