Как сделать авторизацию через дискорд?

Ссылка скопирована
2 ответов

Какой код надо в register.php чтобы перекинуло на спец ссылку где он подтверждает вход через дискорд (вводя свой логин пароль)
Как это выглядит: Юзер зашедший на сайт видит кнопку "создать сервер" нажимая туда его на спец ссылку, если он не имеет cookie с логином паролем от дискорда > тогда его попросят ввести логин пароль, если он имеет cookie с логином паролем то его закинет к кнопке "Авторизовать"
spoiler

Как сделать авторизацию через дискорд?

Как сделать авторизацию через дискорд?

Как сделать авторизацию через дискорд?

Дополнительно:

Ответы:

Достаточно авторизовать пользователя через OAuth2 протокол: https://discord.com/developers/docs/topics/oauth2

  • раз достаточно то напиши как это настроить все, ведь тему создают не только чтобы услышать чего достаточно.
  • shaesnow, так вы прочитайте что написано в доке, если не понимаете, то вам дорога на фрилансер. Никто за бесплатно вам вашу работу делать не будет, раз вы не можете осилить документацию.
  • shaesnow, внимательно прочтите Регламент. Тут так не работает. Вы обязаны показать свою попытку решения проблемы, дать пояснения, что на входе, что ожидали на выходе, и что получили. Тогда, возможно, вам помогут. А так - это не вопрос, а задание.
  • tukreb, в доке не гайд а API.
  • shaesnow, OAuth2 - стандартный протокол авторизации, реализаций море, примеров море, и я даже не глядя в гугл уверен, что есть и примеры реализаций, заточенных прямо на авторизацию именно через дискорд.
  • shurshur, увы но не море раз я не нашел гайда для новичокв
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Для реализации авторизации через Discord вам потребуется использовать OAuth2. Ниже приведен пример кода на PHP, который поможет вам настроить этот процесс:

1. Создайте приложение на портале разработчика Discord (discord.com/developers/applications).
2. Получите Client ID и Client Secret для вашего приложения.
3. Укажите Redirect URI, на который Discord будет перенаправлять пользователя после успешной авторизации.

Пример кода на PHP:

$clientID,
'client_secret' => $clientSecret,
'grant_type' => 'authorization_code',
'code' => $_GET['code'],
'redirect_uri' => $redirectURI,
'scope' => 'identify email'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $tokenURL);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);

// Получение информации о пользователе
$userURL = 'https://discord.com/api/users/@me';
$headers = [
'Authorization: Bearer ' . $data['access_token']
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $userURL);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$userData = json_decode($response, true);

// Используйте данные пользователя для авторизации на вашем сайте
var_dump($userData);
} else {
// Перенаправление пользователя на страницу авторизации Discord
header('Location: ' . $authorizeURL);
}
?>

Этот код отправит пользователя на страницу авторизации Discord, после чего получит access token и информацию о пользователе. Вы можете использовать эту информацию для создания новой учетной записи или для входа существующего пользователя на вашем сайте через Discord. Не забудьте обработать полученные данные с учетом требований безопасности.

Другие ответы (1) Ответить на вопрос
Артём Dev

Для реализации авторизации через Discord на вашем сайте, вам потребуется использовать Discord OAuth2 API. Ниже приведены шаги, которые необходимо выполнить для этого:

1. Создайте приложение на платформе Discord Developer Portal:
- Зайдите на сайт Discord Developer Portal (https://discord.com/developers/applications) и войдите в свой аккаунт.
- Нажмите на кнопку "New Application" и введите название вашего приложения.
- Перейдите на вкладку "OAuth2" и добавьте Redirect URI, куда Discord будет перенаправлять пользователя после авторизации.

2. Получите Client ID и Client Secret:
- Скопируйте Client ID и Client Secret вашего приложения с вкладки "General Information". Эти данные понадобятся вам для настройки авторизации.

3. Создайте ссылку для авторизации пользователя:
- Для генерации ссылки для авторизации пользователя добавьте следующий код на вашем сайте:

$clientId = 'YOUR_CLIENT_ID';
$redirectUri = 'YOUR_REDIRECT_URI';
$scope = 'identify email'; // Права доступа, которые вы запрашиваете у пользователя
$authUrl = 'https://discord.com/api/oauth2/authorize?client_id=' . $clientId . '&redirect_uri=' . $redirectUri . '&response_type=code&scope=' . $scope;
echo '<a href="' . $authUrl . '">Авторизоваться через Discord</a>';

$clientId = 'YOUR_CLIENT_ID'; $redirectUri = 'YOUR_REDIRECT_URI'; $scope = 'identify email'; // Права доступа, которые вы запрашиваете у пользователя $authUrl = 'https://discord.com/api/oauth2/authorize?client_id=' . $clientId . '&amp;redirect_uri=' . $redirectUri . '&amp;response_type=code&amp;scope=' . $scope; echo '<a href="' . $authUrl . '">Авторизоваться через Discord</a>';

4. Обработка ответа от Discord:
- После того, как пользователь авторизуется через Discord, он будет перенаправлен на Redirect URI со следующими параметрами:
- `code`: Код авторизации, который нужно обменять на access token.
- `state`: Параметр, который вы передали при генерации ссылки авторизации.

5. Обменяйте код авторизации на access token:
- Для обмена кода авторизации на access token используйте следующий код:

$clientId = 'YOUR_CLIENT_ID';
$clientSecret = 'YOUR_CLIENT_SECRET';
$redirectUri = 'YOUR_REDIRECT_URI';
$code = $_GET['code'];
$tokenUrl = 'https://discord.com/api/oauth2/token';
$data = [
    'client_id' =&gt; $clientId,
    'client_secret' =&gt; $clientSecret,
    'grant_type' =&gt; 'authorization_code',
    'code' =&gt; $code,
    'redirect_uri' =&gt; $redirectUri,
];
$options = [
    'http' =&gt; [
        'method' =&gt; 'POST',
        'header' =&gt; 'Content-Type: application/x-www-form-urlencoded',
        'content' =&gt; http_build_query($data),
    ],
];
$context = stream_context_create($options);
$response = file_get_contents($tokenUrl, false, $context);
$tokenData = json_decode($response, true);
$accessToken = $tokenData['access_token'];

$clientId = 'YOUR_CLIENT_ID'; $clientSecret = 'YOUR_CLIENT_SECRET'; $redirectUri = 'YOUR_REDIRECT_URI'; $code = $_GET['code']; $tokenUrl = 'https://discord.com/api/oauth2/token'; $data = [ 'client_id' =&gt; $clientId, 'client_secret' =&gt; $clientSecret, 'grant_type' =&gt; 'authorization_code', 'code' =&gt; $code, 'redirect_uri' =&gt; $redirectUri, ]; $options = [ 'http' =&gt; [ 'method' =&gt; 'POST', 'header' =&gt; 'Content-Type: application/x-www-form-urlencoded', 'content' =&gt; http_build_query($data), ], ]; $context = stream_context_create($options); $response = file_get_contents($tokenUrl, false, $context); $tokenData = json_decode($response, true); $accessToken = $tokenData['access_token'];

6. Получите информацию о пользователе:
- Для получения информации о пользователе используйте access token, полученный на предыдущем шаге:

$userUrl = 'https://discord.com/api/users/@me';
$options = [
    'http' =&gt; [
        'header' =&gt; 'Authorization: Bearer ' . $accessToken,
    ],
];
$context = stream_context_create($options);
$userResponse = file_get_contents($userUrl, false, $context);
$userData = json_decode($userResponse, true);
echo 'Привет, ' . $userData['username'];

$userUrl = 'https://discord.com/api/users/@me'; $options = [ 'http' =&gt; [ 'header' =&gt; 'Authorization: Bearer ' . $accessToken, ], ]; $context = stream_context_create($options); $userResponse = file_get_contents($userUrl, false, $context); $userData = json_decode($userResponse, true); echo 'Привет, ' . $userData['username'];

Теперь у вас есть авторизация через Discord на вашем сайте. Не забудьте обработать возможные ошибки и добавить необходимую логику для работы с полученными данными пользователя.

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно