public function testInstance() { $grantHandler = Akita_OpenIDConnect_Server_GrantHandlers::getHandler('authorization_code'); $this->assertInstanceOf('Akita_OpenIDConnect_Server_GrantHandler_AuthorizationCode', $grantHandler); $grantHandler = Akita_OpenIDConnect_Server_GrantHandlers::getHandler('refresh_token'); $this->assertInstanceOf('Akita_OAuth2_Server_GrantHandler_RefreshToken', $grantHandler); $grantHandler = Akita_OpenIDConnect_Server_GrantHandlers::getHandler('client_credentials'); $this->assertInstanceOf('Akita_OAuth2_Server_GrantHandler_ClientCredentials', $grantHandler); $grantHandler = Akita_OpenIDConnect_Server_GrantHandlers::getHandler('password'); $this->assertInstanceOf('Akita_OAuth2_Server_GrantHandler_Password', $grantHandler); try { $grantHandler = Akita_OpenIDConnect_Server_GrantHandlers::getHandler('invalid_grant'); } catch (Akita_OAuth2_Server_Error $error) { $this->assertEquals('400', $error->getOAuth2Code(), $error->getMessage()); $this->assertEquals('unsupported_grant_type', $error->getOAuth2Error(), $error->getMessage()); $this->assertEmpty($error->getOAuth2ErrorDescription(), $error->getMessage()); } }
<?php require_once './lib/DataHandler.php'; // process request $headers = apache_request_headers(); $request = new Akita_OpenIDConnect_Server_Request('authorization', $_SERVER, $_POST, $headers); $dataHandler = new Akita_OpenIDConnect_Server_Sample_DataHandler($request); try { $grantHandler = Akita_OpenIDConnect_Server_GrantHandlers::getHandler($request->param['grant_type']); $res = $grantHandler->handleRequest($dataHandler); } catch (Akita_OAuth2_Server_Error $error) { // error handling header('HTTP/1.1 ' . $error->getOAuth2Code()); header('Content-Type: application/json;charset=UTF-8'); header('Cache-Control: no-store'); header('Pragma: no-cache'); $res = array(); $res['error'] = $error->getOAuth2Error(); $desc = $error->getOAuth2ErrorDescription(); if (!empty($desc)) { $res['error_description'] = $desc; } echo Akita_OpenIDConnect_Util_Json::encode($res); exit; } header('HTTP/1.1 200 OK'); header('Content-Type: application/json;charset=UTF-8'); header('Cache-Control: no-store'); header('Pragma: no-cache'); echo Akita_OpenIDConnect_Util_Json::encode($res);