impact / oauth2-discord
适用于 League Oauth2 客户端的 Discord 提供商
dev-master
2020-10-11 14:15 UTC
Requires
- enygma/modler: 2.*
Requires (Dev)
- phpunit/phpunit: 4.1.4
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
:关于当前用户的信息