Авторизация через соц сети spa, как произвести логинизацию уже существующего пользователя без пароля?
На бекэнде стоит Laravel + oauth 2.0 (laravel pasport). На клиенте использую vue js.
Я примерно понял как регистрировать пользователей, клиент нажимает на кнопку зайти через, дает разрешение на чтение его данных. Я беру эти данные в основном только email и создаю в базе юзера.
Как обычно поступают в данном случае с паролем? генерить случайный и записывать?
Допустим записали юзера я допустим отослал ему на почту с генерированный пароль ему лень заходить смотреть менять его он нажимает аутентифицироваться через соц сеть, нам в ответ приходит та же самая почта что у нас есть в базе, как его теперь аутентифицировать как получить токен через oauth ?
при первичной регистрации я получаю текен с помощью такого запроса:
grant_type: password
client_id: id
client_secret: secret
username: admin
password: secret
1) что делать с паролем при первичное регистрации?
2) как получить токен зная все остальное кроме пароля если юзер уже записан в базе?
Сергей, это совсем не проблема сгенирировать и закешировать код а потом его записать, в Laravel уже есть это из коробки, первый вопрос задавался как предпосылка ко второму основному вопросу. Ну допустим я захешировал и записал рандомный пароль как теперь авторизировать юзера и получить токен если он уже записан в базе? он нажимает авторизироваться через google у меня есть только его почта что теперь то?
Статья написана для сайта на laravel, у меня на нем только api, фронт на vue js.
tripcollor, Как я понял это имя, которое вы введете после команды php artisan passport:client --personal Консоль вас попросит его ввести после выполнения команды
Кстати вы хотите использовать эмейл из соц. сети для авторизации, это не совсем правильно (пользователь может поменять эмейл). Соц. сети отдают уникальный id пользователя. Лучше использовать его при авторизации-регистрации.
Я создаю отдельную таблицу, в которой проставляются соответствия пользователя и социальной сети:
По external_id и social_network нахожу user_id пользователя и авторизую его.
Сергей, не это другое похоже то что вы говорите это создание клиентов, по сути если вначале запускалась команда php artisan passport:install то php artisan passport:client --personal не нужно запускать, да этот код действительно отдает токен аутентификации, спасибо!
Сергей, да тоже верно, но допустим у меня есть аккаунты на google vk и fb я везде стараюсь использовать одну почту, получается даже если в следующий раз я зайду на какой нибудь сервис и попробую залогинется с помощью другой социалки то проблем не будет, ну а если делать по id соц сети то получается создастся новый аккаунт. В принципе и тот и этот метод не плох нужно будет подумать над этим, спасибо за идеи