psecio/oauth2-discord

League Oauth2 客户端的 Discord 提供者

dev-master 2017-10-30 13:53 UTC

This package is auto-updated.

Last update: 2024-09-15 11:16:21 UTC


README

Discord OAuth2 提供者

这是一个用于 PHP League 的 OAuth2 客户端的 Discord 提供者。可以通过以下链接访问 OAuth2 客户端:OAuth2 客户端

安装

要安装提供者,请使用 Composer

composer require psecio/oauth2-discord

使用:OAuth 连接

以下代码是使用此库与 Discord 服务进行 OAuth 连接并授权账户的示例。默认情况下,它将请求以下作用域

  • 身份
  • 电子邮件
  • 读取消息
  • 公会

有关作用域的更多信息,请参阅 此文档

<?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 获取信息。此过程需要一个实现 Psecio\DiscordPHP\ConnectorInterface 并定义 getToken() 方法的类。此方法应返回当前的 OAuth2 令牌,然后可以与 Manager 类一起使用。例如

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

$connector = new MyConnector();
$manager = \Psecio\DiscordPHP\Manager::getInstance($connector);

?>

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

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

?>

支持的属性

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