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

Codeigniter 3集成Xero API SDK报League OAuth2 invalid_client错误求助

解决Xero PHP OAuth2 SDK集成Codeigniter3时的invalid_client错误

以下是针对该错误的常见排查与解决步骤:

  • 核对客户端凭证准确性
    即便你确认过信息,也需再次检查:

    • 从Xero开发者后台复制CLIENT_ID和CLIENT_SECRET时,确保没有带入多余空格、换行或不可见字符。可在控制器中用var_dump()输出实际读取到的凭证值,确认内容完全匹配。
    • 若之前生成的密钥已丢失或过期,直接在Xero后台重新生成新密钥(Xero密钥仅显示一次,无法找回)。
  • 确保重定向URI完全匹配
    Xero后台配置的重定向URI必须与代码中传入的redirectUri完全一致:

    • 协议(http/https)需对应,生产环境必须使用HTTPS(localhost除外);
    • 域名、路径、甚至末尾斜杠都要完全相同,比如后台设https://xxxx.co.uk/pages/xero-callback,代码里不能写成https://xxxx.co.uk/pages/xero-callback/。
  • 检查Codeigniter3配置加载逻辑

    • 若凭证存于Codeigniter配置文件中,确认控制器正确加载配置项,比如$this->config->item('xero_client_id')是否返回正确值,避免因配置文件名错误、大小写问题导致凭证为空。
    • 排查服务器环境变量是否覆盖本地配置,比如服务器上同名环境变量优先级更高,导致加载错误凭证。
  • 指定正确的OAuth2认证方式
    Xero要求客户端认证使用client_secret_basic方式,初始化Xero Provider时显式指定认证方法:

    $provider = new \XeroAPI\XeroPHP\OAuth2\Provider\Xero([
        'clientId'          => $this->config->item('xero_client_id'),
        'clientSecret'      => $this->config->item('xero_client_secret'),
        'redirectUri'       => base_url('pages/xero-callback'),
        'authentication'    => \League\OAuth2\Client\Provider\AbstractProvider::AUTH_METHOD_BASIC,
    ]);
    
  • 排查服务器SSL环境

    • 生产环境必须使用有效HTTPS证书,Xero拒绝HTTP回调地址;
    • 检查服务器SSL证书链是否完整,避免因证书问题导致请求无法被Xero服务器验证。
  • 直接模拟请求排查
    用curl模拟Xero的token请求,确认凭证和参数是否有效:

    curl -X POST "https://identity.xero.com/connect/token" \
        -H "Content-Type: application/x-www-form-urlencoded" \
        -d "grant_type=authorization_code&code=YOUR_AUTH_CODE&redirect_uri=YOUR_REDIRECT_URI&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
    

    查看返回的具体错误信息,Xero有时会给出比SDK更详细的提示。

内容的提问来源于stack exchange,提问作者user3507560

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:48:38