示例#1
0
 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);
 }