Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/martinbean/socialite-discord-provider
A Discord provider for Laravel Socialite.
https://github.com/martinbean/socialite-discord-provider
discord laravel oauth socialite
Last synced: about 2 months ago
JSON representation
A Discord provider for Laravel Socialite.
- Host: GitHub
- URL: https://github.com/martinbean/socialite-discord-provider
- Owner: martinbean
- Created: 2020-05-22T12:29:08.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-11-14T12:25:12.000Z (about 2 years ago)
- Last Synced: 2024-10-20T18:12:50.413Z (3 months ago)
- Topics: discord, laravel, oauth, socialite
- Language: PHP
- Size: 7.81 KB
- Stars: 25
- Watchers: 1
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Discord provider for Laravel Socialite
A provider for [Laravel Socialite][1] that allows authentication as a Discord user or bot.## Installation
```
composer require martinbean/socialite-discord-provider:^1.2
```## Usage
The package registers a Socialite driver with the name of `discord`.Before using the driver, create an OAuth application in Discord’s developer portal:
https://discord.com/developers/applicationsSet your client ID and client secret as environment variables, and then reference them in your **config/services.php** file. You will also need to add a redirect URL to your application if you intend to authenticate as a user.
```php
[
'client_id' => env('DISCORD_CLIENT_ID'),
'client_secret' => env('DISCORD_CLIENT_SECRET'),
'redirect' => '/auth/discord/callback',
],];
```The `redirect` value will need to match a redirect URL in your Discord application settings. It can be relative as above.
### Authenticating as a user
Create a controller to redirect and handle the access token callback:```php
redirect();
}/**
* Obtain the user information from Discord.
*
* @return \Illuminate\Http\Response
*/
public function handleProviderCallback()
{
$user = Socialite::driver('discord')->user();// $user->token;
}
}
```#### Scopes
Discord supports various scopes when authenticating as a user. You can find a list here: https://discord.com/developers/docs/topics/oauth2#shared-resources-oauth2-scopesTo request additional scopes when authenticating, you can use the `scopes` method before redirecting:
```php
return Socialite::driver('discord')
->scopes(['guilds', 'messages.read'])
->redirect();
```### Authenticating as a bot
Discord allows you to add “bots” to guilds (servers). This is a modified OAuth flow, where you are redirected to Discord to confirm the guild you wish to add a bot to. There is no redirect back to your application when you authorize the request.You can authenticate as a bot by using the `bot` method before redirecting:
```php
bot()->redirect();
}
}
```If you know the guild ID you wish to add your bot to, you may specify it with the `guild` method:
```php
return Socialite::driver('discord')
->bot()
->guild($guildId)
->redirect();
```Additionally, you can disable the guild select:
```php
return Socialite::driver('discord')
->bot()
->guild($guildId)
->disableGuildSelect()
->redirect();
```**Note:** if you try and disable guild selection without specifying a guild, the package will throw a `GuildRequiredException` instance.
## Issues
If you have any problems using this package, please open an issue on the [GitHub repository][2].[1]: https://laravel.com/docs/master/socialite
[2]: https://github.com/martinbean/socialite-discord-provider