如何在CodeIgniter过滤器中修改OAuth2 PHP的无效/过期Token响应?
可以通过CodeIgniter过滤器修改令牌无效/过期时的响应
修改实现方式
不要直接调用OAuth2响应的send()方法并终止程序,而是获取错误响应的信息后,构造CodeIgniter的自定义响应返回:
class OauthFilter implements FilterInterface { public function before(RequestInterface $request, $arguments = null) { $oauth = new Oauth(); $request = Request::createFromGlobals(); $response = new Response(); if(!$oauth->server->verifyResourceRequest($request)){ // 获取OAuth2生成的错误响应 $oauthErrorResp = $oauth->server->getResponse(); // 解析错误内容 $errorInfo = json_decode($oauthErrorResp->getContent(), true); // 构造自定义格式的响应返回 return service('response') ->setStatusCode($oauthErrorResp->getStatusCode()) ->setJSON([ 'success' => false, 'error_code' => $errorInfo['error'], 'error_msg' => $errorInfo['error_description'] // 可根据业务需求添加更多自定义字段 ]); } } public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) { } }
关于getAccessTokenData返回null的说明
getAccessTokenData仅在verifyResourceRequest验证通过时,才能获取到有效的令牌数据。当令牌无效或过期导致验证失败时,该方法返回null是符合预期的行为。
内容的提问来源于stack exchange,提问作者unice
相关产品推荐
相关产品推荐

