kineryy / socialite-discord-provider
Discord 提供程序的 Laravel Socialite。
Requires
- facade/ignition-contracts: ^1.0
- laravel/socialite: ^4.0|^5.0
This package is not auto-updated.
Last update: 2022-11-28 19:15:38 UTC
README
一个为 Laravel Socialite 提供的提供程序,允许用户或机器人身份进行身份验证。
安装
composer require martinbean/socialite-discord-provider:^1.2
使用
此包注册了一个名为 discord
的 Socialite 驱动程序。
在使用驱动程序之前,请在 Discord 开发者门户中创建 OAuth 应用程序: https://discord.com/developers/applications
将您的客户端 ID 和客户端密钥设置为环境变量,然后在您的 config/services.php 文件中引用它们。如果您打算作为用户进行身份验证,您还需要将重定向 URL 添加到您的应用程序中。
<?php // config/services.php return [ // Any other services 'discord' => [ 'client_id' => env('DISCORD_CLIENT_ID'), 'client_secret' => env('DISCORD_CLIENT_SECRET'), 'redirect' => '/auth/discord/callback', ], ];
redirect
的值需要与您的 Discord 应用程序设置中的重定向 URL 匹配。它可以像上面一样是相对的。
作为用户进行身份验证
创建一个控制器来重定向并处理访问令牌回调
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Laravel\Socialite\Facades\Socialite; class DiscordController extends Controller { /** * Redirect the user to the Discord authentication page. * * @return \Illuminate\Http\Response */ public function redirectToProvider() { return Socialite::driver('discord')->redirect(); } /** * Obtain the user information from Discord. * * @return \Illuminate\Http\Response */ public function handleProviderCallback() { $user = Socialite::driver('discord')->user(); // $user->token; } }
作用域
Discord 在作为用户进行身份验证时支持各种作用域。您可以在此找到列表: https://discord.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopes
在重定向之前,您可以使用 scopes
方法请求额外的权限
return Socialite::driver('discord') ->scopes(['guilds', 'messages.read']) ->redirect();
作为机器人进行身份验证
Discord 允许您将“机器人”添加到公会(服务器)。这是一个修改后的 OAuth 流程,您将被重定向到 Discord 以确认您希望添加机器人的公会。在您授权请求时,不会将重定向返回到您的应用程序。
您可以在重定向之前使用 bot
方法作为机器人进行身份验证
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use Laravel\Socialite\Facades\Socialite; class DiscordController extends Controller { /** * Redirect the user to the Discord authentication page. * * @return \Illuminate\Http\Response */ public function redirectToProvider() { return Socialite::driver('discord')->bot()->redirect(); } }
如果您知道您希望将机器人添加到的公会 ID,您可以使用 guild
方法指定它
return Socialite::driver('discord') ->bot() ->guild($guildId) ->redirect();
此外,您还可以禁用公会选择
return Socialite::driver('discord') ->bot() ->guild($guildId) ->disableGuildSelect() ->redirect();
注意:如果您尝试禁用公会选择而不指定公会,则包将抛出 GuildRequiredException
实例。
问题
如果您在使用此包时遇到任何问题,请在 GitHub 存储库 上创建一个问题。