Laravel применить форму с oauth2 — концептуальный вопрос

#php #laravel #oauth-2.0 #discord

#php #laravel #oauth-2.0 #Discord

Вопрос:

Я пытаюсь создать форму заявки, в которой вы должны подключиться к discord oauth2 после отправки заявки. Итак, я уже полностью настроил oauth, и я мог бы создать кнопку, с помощью которой вы подключаетесь к discord, а затем заполняете свою форму. Но я бы хотел, чтобы форма отправляла и запрашивала oauth с помощью одной и той же кнопки. Теперь проблема, с которой я сталкиваюсь, я не могу передать дополнительные данные через запрос oauth.

В моей таблице «приложения» есть столбцы id, discord_id и form data. Итак, моей первой идеей было просто сохранить данные формы и сделать перенаправление на страницу discord oauth, затем вернуться обратно к контроллеру и добавить идентификатор. Проблема в том, что я не могу передать дополнительные данные в oauth, поэтому я не смог бы правильно назначить пользователям discord id.

Может быть, у вас, ребята, есть какие-либо идеи или вы уже работали с discord oauth2.

Спасибо

Ответ №1:

Похоже, вам нужно предоставить код авторизации OAuth2.

На сайте разработчика Discord есть руководство по выполнению этого здесь.

Основная идея о том, как это будет функционировать, заключается в следующем:

  1. Пользователь нажимает кнопку «Подключиться к Discord», которая перенаправляет пользователя на URL-адрес авторизации Discord, содержащий ваш идентификатор клиента приложения разработчика и области
  2. Пользователь вводит свои данные на страницу входа на сайт Discord и нажимает Войти
  3. После аутентификации с помощью Discord пользователю необходимо будет одобрить ваше приложение, чтобы получить доступ к информации своего профиля в Discord
  4. После одобрения Discord перенаправляет пользователя обратно на ваш веб-сайт и передает код авторизации через GET
  5. Затем ваш веб-сайт отправляет отдельный запрос (с сервера) в Discord, чтобы запросить токен авторизации, который затем можно использовать для запроса информации пользователя из Discord

Вы упомянули, что используете Laravel, я бы настоятельно рекомендовал вам взглянуть на Laravel Socialite, который будет обрабатывать большую часть этой логики для вас.

Затем вы можете использовать поставщика социальных сетей Discord для конкретной обработки логики для Discord.

Комментарии:

1. Привет, спасибо за ваш ответ. Я уже закончил всю часть discord oauth. Единственная проблема, с которой я сталкиваюсь, заключается в том, как я могу передать данные формы своему контроллеру, а затем перенаправить на discord и обратно, получить информацию пользователя и сохранить ее вместе с моими данными из формы. Также в socialite не включен драйвер discord. Итак, мне нужно только один раз получить идентификатор discord пользователя, поэтому использование целого пакета для этого кажется мне слишком сложным.