chadicus / slim-oauth2-http
PSR-7 和 bshaffer 的 OAuth2 Server http 消息的桥梁组件。
v3.2.0
2023-05-09 18:48 UTC
Requires
- php: ^5.6 || ^7.0 || ^8.0
- bshaffer/oauth2-server-php: ^1.8
- laminas/laminas-diactoros: ^1.8 || ^2.0
Requires (Dev)
- phpunit/phpunit: ^5.7 || ^6.5 || ^9.6 || ^10.1
- squizlabs/php_codesniffer: ^3.7
Suggests
- chadicus/slim-oauth2-middleware: Adds OAuth2 middleware for API requests.
- chadicus/slim-oauth2-routes: Offers standard OAuth2 routes for slim applications
README
将 PSR-7 http 消息桥接到 OAuth2 请求和响应的静态工具类。虽然这个库主要用于与 Slim 3 一起使用,但它应该与任何 PSR-7 兼容的框架一起工作。
要求
Chadicus\Slim\OAuth2\Http 需要 PHP 5.6(或更高版本)。
Composer
要作为本地项目依赖项添加库,请使用 Composer!只需将 chadicus/slim-oauth2-http
添加到您的项目 composer.json
文件中的依赖项中,例如
composer require chadicus/slim-oauth2-http
联系
开发者可通过以下方式联系
项目构建
通过检出代码,在您的 PATH 中获取 Composer 并运行
composer install ./vendor/bin/phpunit ./vendor/bin/phpcs
社区
可用操作
将 PSR-7 请求转换为 OAuth2 请求
use Chadicus\Slim\OAuth2\Http\RequestBridge; $oauth2Request = RequestBridge::toOAuth2($psrRequest);
将 OAuth2 响应转换为 PSR-7 响应。
use Chadicus\Slim\OAuth2\Http\ResponseBridge; $psr7Response = ResponseBridge::fromOAuth2($oauth2Request);
示例集成
创建新的 OAuth2 访问令牌的简单路由
use Chadicus\Slim\OAuth2\Http\RequestBridge; use Chadicus\Slim\OAuth2\Http\ResponseBridge; use OAuth2; use OAuth2\GrantType; use OAuth2\Storage; use Slim; $storage = new Storage\Memory( [ 'client_credentials' => [ 'testClientId' => [ 'client_id' => 'testClientId', 'client_secret' => 'testClientSecret', ], ], ] ); $server = new OAuth2\Server( $storage, [ 'access_lifetime' => 3600, ], [ new GrantType\ClientCredentials($storage), ] ); $app = new Slim\App(); $app->post('/token', function ($psrRequest, $psrResponse, array $args) use ($app, $server) { //create an \OAuth2\Request from the current \Slim\Http\Request Object $oauth2Request = RequestBridge::toOAuth2($psrRequest); //Allow the oauth2 server instance to handle the oauth2 request $oauth2Response = $server->handleTokenRequest($oauth2Request), //Map the oauth2 response into the slim response return ResponseBridge::fromOAuth2($oauth2Response); });