You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:34:55