detain / oauth2-server-mydb-storage
MyDb 存储实现的 thephpleague oauth2 服务器存储接口
dev-master
2024-02-03 08:37 UTC
Requires
- ext-pdo: *
- league/oauth2-server: >=6.1.1,<8.3.2
Requires (Dev)
- phpunit/phpunit: >=6.0
This package is auto-updated.
Last update: 2024-09-03 09:51:44 UTC
README
这是 MyDb\Generic Repository 的 thephpleague/oauth2-server 存储接口的实现。
使用方法
use Detain\OAuth2\Server\Repository\MyDb\AccessTokenRepository; use Detain\OAuth2\Server\Repository\MyDb\ClientRepository; use Detain\OAuth2\Server\Repository\MyDb\ScopeRepository; use Detain\OAuth2\Server\Repository\MyDb\SessionsRepository; use Detain\OAuth2\Server\Repository\MyDb\AuthCodeRepository; use Detain\OAuth2\Server\Repository\MyDb\RefreshTokenRepository; use League\OAuth2\Server\ResourceServer; use MyDb\Mysqli\Db; $db = new Db(); $sessionRepository = new SessionRepository($db); $accessTokenRepository = new AccessTokenRepository($db); $clientRepository = new ClientRepository($db); $scopeRepository = new ScopeRepository($db); $server = new ResourceServer($sessionRepository, $accessTokenRepository, $clientRepository, $scopeRepository);
一旦你有了 League\OAuth2\Server\AuthorizationServer
的实例,你可以设置不同的存储。
use Detain\OAuth2\Server\Repository\MyDb\AccessTokenRepository; use Detain\OAuth2\Server\Repository\MyDb\ClientRepository; use Detain\OAuth2\Server\Repository\MyDb\ScopeRepository; use Detain\OAuth2\Server\Repository\MyDb\SessionsRepository; use Detain\OAuth2\Server\Repository\MyDb\AuthCodeRepository; use Detain\OAuth2\Server\Repository\MyDb\RefreshTokenRepository; $server->setAccessTokenRepository(new AccessTokenRepository($db)); $server->setClientRepository(new ClientRepository($db)); $server->setScopeRepository(new ScopeRepository($db)); $server->setSessionRepository(new SessionRepository($db)); $server->setAuthCodeRepository(new AuthCodeRepository($db)); $server->setRefreshTokenRepository(new RefreshTokenRepositoryRepository($db));
安装
推荐安装方法是通过 Composer。
在你的项目根目录下运行
$ composer require detain/oauth2-server-mydb-storage
测试客户端凭证授权示例
发送以下 cURL 请求
curl -X "POST" "https://mynew.interserver.net/oauth/server/client_credentials.php/access_token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: 1.0" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "client_id=rocketchat_2773" \
--data-urlencode "client_secret=s3cr3t" \
--data-urlencode "scope=basic email"
测试密码授权示例
发送以下 cURL 请求
curl -X "POST" "https://mynew.interserver.net/oauth/server/password.php/access_token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: 1.0" \
--data-urlencode "grant_type=password" \
--data-urlencode "client_id=rocketchat_2773" \
--data-urlencode "client_secret=s3cr3t" \
--data-urlencode "username=alex" \
--data-urlencode "password=whisky" \
--data-urlencode "scope=basic email"
测试刷新令牌授权示例
发送以下 cURL 请求。将 {{REFRESH_TOKEN}}
替换为上面另一个授权中的刷新令牌
curl -X "POST" "https://mynew.interserver.net/oauth/server/refresh_token.php/access_token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: 1.0" \
--data-urlencode "grant_type=refresh_token" \
--data-urlencode "client_id=rocketchat_2773" \
--data-urlencode "client_secret=s3cr3t" \
--data-urlencode "refresh_token={{REFRESH_TOKEN}}"