public function action_access_token() { try { // Tell the auth server to issue an access token //$params = $this->authserver->getGrantType('authorization_code')->checkAuthoriseParams($this->authserver->getRequest()->get()); //$ttl = 3600*24; //Access Token Expires in a day $ttl = 120; //Access Token Expires in a day $this->authserver->setAccessTokenTTL($ttl); $code = $this->authserver->getRequest()->post('code'); if (!Cache::has($code)) { throw new Exception("Invalid Session, please try authorising again"); } $response = $this->authserver->issueAccessToken($this->authserver->getRequest()->post()); //Convert ID token to JWT using client secret as key $client_secret = Client::where('id', $this->authserver->getRequest()->post()['client_id'])->first()->secret; $response['id_token'] = JWT::encode($response['id_token'], $client_secret); } catch (League\OAuth2\Server\Exception\ClientException $e) { // Throw an exception because there was a problem with the client's request $response = array('error' => $this->authserver->getExceptionType($e->getCode()), 'error_description' => $e->getMessage()); // Set the correct header header($this->authserver->getExceptionHttpHeaders($this->authserver->getExceptionType($e->getCode()))[0]); } catch (Exception $e) { // Throw an error when a non-library specific exception has been thrown $response = array('error' => 'undefined_error', 'error_description' => $e->getMessage()); } header('Content-type: application/json'); echo json_encode($response); }