impact/oauth2-discord

适用于 League Oauth2 客户端的 Discord 提供商

dev-master 2020-10-11 14:15 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:57:44 UTC


README

Discord OAuth2 提供商

这是一个用于 PHP League 的 OAuth2 客户端 的 Discord 提供商。

安装

要安装提供商,请使用 Composer

composer require impact/oauth2-discord

用法:OAuth 连接

以下代码是使用库与 Discord 服务建立 OAuth 连接并授权账户的示例。默认情况下,它将请求以下范围

  • identity
  • email
  • messages.read
  • guilds

有关范围的更多信息,请参阅 此文档

<?php

$provider = new \League\OAuth2\Client\Provider\Discord([
    'clientId'          => 'client-id',
    'clientSecret'      => 'client-secret',
    'redirectUri'       => 'http://yoursite.com/callback'
]);

if (!isset($_GET['code'])) {
    // If we don't have a code yet, we need to make the link
    echo '<a href="'.$provider->getAuthorizationUrl().'">Link to Discord</a>';

} else {
    // If we do have a code, use it to get a token
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);

    $user = $provider->getResourceOwner($accessToken);

    /**
     * User object contains:
     * - username
     * - verified
     * - mfa_enabled
     * - id
     * - avatar
     */
}

?>

用法:获取数据

此库还可以用于在经过认证的请求后从 API 获取信息。此过程需要一个实现 \Impact\DiscordAuth\ConnectorInterface 并定义 getToken() 方法的类。此方法应返回当前的 OAuth2 令牌,然后可以与 Manager 类一起使用。例如

<?php
class MyConnector implements \Impact\DiscordAuth\ConnectorInterface
{
    public function getToken()
    {
        return 'fdagahdar4324fdgfdsgfss';
    }
}

$connector = new MyConnector();
$manager = \Impact\DiscordAuth\Manager::getInstance($connector);

?>

如果一切顺利(并且令牌未过期或类似的问题),现在您应该可以使用辅助方法从 API 获取信息。例如,要获取当前链接用户的全部公会信息,您只需使用 guilds 属性即可。

<?php
$guilds = $manager->guilds;
foreach ($guilds as $guild) {
    echo $guild->name;
}

?>

支持属性

  • guilds:当前用户的公会列表
  • user:关于当前用户的信息