romitou/oauth2-discord

This package provides Discord's OAuth 2 and supports League's OAuth 2.0 client.

1.0.1 2021-01-21 22:05 UTC

README

This package provides Discord's OAuth 2 and supports League's OAuth 2.0 client.


🚀 Download and installation

This package is available on Packagist. You can install it directly via Composer with the command composer req romitou/oauth2-discord.

📖 Example

<?php

require __DIR__ . '/vendor/autoload.php';
session_start();

$discordProvider = new \Romitou\OAuth2\Client\DiscordProvider([
    'clientId' => '', // The ID of your application
    'clientSecret' => '', // The secret of your application
    'redirectUri' => '', // The callback URI where the user will be redirected
    'scopes' => [], // The scopes you want (e.g. ['identify', 'email'])
    'state' => '' // Optional, the state of the provider
]);

if (isset($_GET['code'])) {

    if ($_SESSION['oauth2_state'] !== $_GET['state'])
        exit('The returned state doesn\'t match with your local state.');
        
    $discordToken = $discordProvider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);
    
    $discordUser = $discordProvider->getResourceOwner($discordToken);
    
    // Now, you will be able to retrieve user's informations.
    echo 'Your token is ' . $discordToken->getToken();
    echo 'Your username is ' . $discordUser->getUsername();
    
} else {

    $oauthUrl = $discordProvider->getAuthorizationUrl();
    $_SESSION['oauth2_state'] = $discordProvider->getState();
    header('Location: ' . $oauthUrl);
    
}