1. 在 Discord 开发者门户网站上创建一个应用程序并获取其客户端 ID 和密钥。

  2. 在 Discord 应用程序设置中,启用服务器成员列表和消息读取权限。

  3. 在 ThinkPHP 应用程序中,使用 Composer 安装 discordphp/discord.php 包。

  4. 在 config/app.php 中添加 DiscordPHP\Discord\DiscordServiceProvider。

  5. 在 config/discord.php 中配置 Discord 客户端 ID 和密钥。

  6. 在 routes/web.php 中添加以下路由:

Route::get('/discord/login', 'DiscordController@login'); Route::get('/discord/callback', 'DiscordController@callback');

  1. 在 app/Http/Controllers/DiscordController.php 文件中编写 login 和 callback 方法。

public function login() { $discord = new Discord([ 'clientId' => config('discord.client_id'), 'clientSecret' => config('discord.client_secret'), 'redirectUri' => url('/discord/callback'), ]);

$url = $discord->getAuthorizationUrl();

session(['discord_state' => $discord->getState()]);

return redirect($url);

}

public function callback(Request $request) { $discord = new Discord([ 'clientId' => config('discord.client_id'), 'clientSecret' => config('discord.client_secret'), 'redirectUri' => url('/discord/callback'), ]);

$state = session('discord_state');

if (!$state || $state !== $request->get('state')) {
    return redirect('/');
}

$token = $discord->getAccessToken('authorization_code', [
    'code' => $request->get('code'),
]);

$user = $discord->getResourceOwner($token);

// 在此处处理用户数据

}

  1. 在 callback 方法中,使用 getResourceOwner 方法获取 Discord 用户数据。在此处,您可以处理用户数据并将其存储在数据库中,或者将其用于其他自定义逻辑。

  2. 在 Discord 应用程序设置中,将 OAuth2 回调 URL 设置为 /discord/callback。

  3. 启动 ThinkPHP 应用程序并访问 /discord/login 来启动 OAuth2 流程。

  4. 在 Discord 中登录并授权您的应用程序。授权后,将重定向到 /discord/callback 路由,其中将包含访问令牌,您可以在其中获取 Discord 用户数据。


原文地址: https://www.cveoy.top/t/topic/nJ0R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录