The purpose of this fork is to make the \OAuth2\ResponseInterface::setStatusCode() compatible with Symfony >= 4.
Currently it throws the following error when trying to use the oauth2-server-bundle from a PHP 7.4/Symfony 4/5 application:
Compile Error: Declaration of OAuth2\HttpFoundationBridge\Response::setStatusCode($statusCode, $text = NULL) must be compatible with Symfony\Component\HttpFoundation\Response::setStatusCode(int $code, $text = NULL): object
A bridge to HttpFoundation for oauth2-server-php.
oauth2-server-httpfoundation-bridge is a wrapper for oauth2-server-php
which returns Symfony\Component\HttpFoundation\Response instead of OAuth2\Response, and uses Symfony\Component\HttpFoundation\Request instead of OAuth2\Request.
If you are integrating OAuth2 into a Silex, Symfony, or Laravel 4 app, (or any app using HttpFoundation), this will make your application much cleaner
Composer is the best way to install this library. Add this line to composer.json:
{
"require": {
"bshaffer/oauth2-server-httpfoundation-bridge": "v1.0",
...
},
...
}
And then run composer.phar install
Match tags with the oauth2-server-php library when possible.
v1.1is the latest tag.
Creating the request object is the same as before, except now you use the
OAuth2\HttpFoundationBridge\Request class:
$request = OAuth2\HttpFoundationBridge\Request::createFromGlobals();
$app->run($request);The Request object is now compatible with both HttpFoundation and oauth2-server-php
// getBaseUrl is unique to HttpFoundation
$baseUrl = $request->getBaseUrl();
// call oauth server
$server->grantAccessToken($request);If the HttpFoundation request already exists, you can use the static createFromRequest
function to build the OAuth2\HttpFoundationBridge\Request instance:
use OAuth2\HttpFoundationBridge\Request as BridgeRequest;
// in your controller layer, the $request object is passed in
public function execute(Request $request)
{
//... (instantiate server/response objects)
$bridgeRequest = BridgeRequest::createFromRequest($request);
$server->grantAccessToken($bridgeRequest, $response);
}The OAuth2\HttpFoundationBridge\Response object extends Symfony\Component\HttpFoundation\JsonResponse,
and implements OAuth2\ResponseInterface, allowing you to pass this in and return it from your controllers.
In Symfony and Silex, this will be all that is needed to integrate the server:
use OAuth2\HttpFoundationBridge\Response as BridgeResponse;
// in your controller layer, the $request object is passed in
public function execute(Request $request)
{
//... (instantiate server/response objects)
$response = new BridgeResponse();
return $server->handleTokenRequest($request, $response);
}Note: this object will return JSON. Implement your own class using
OAuth2\ResponseInterfaceto support a different content-type.
- OAuth2 Request - Silex Integration
- OAuth2 Response - Silex Integration
Please contact Brent Shaffer (bshafs gmail com) for more information
