错误码参考

UserMatrix API 完整错误码表与排查指南。

错误响应格式

所有 API 错误返回统一格式:

{
  "code": 40163,
  "msg": "code 已被消费",
  "data": null
}
  • code: 1 表示成功
  • code: 非1 表示失败,具体含义见下表

通用错误码

codeHTTP 状态含义排查建议
1200成功-
0200通用失败查看 msg 字段
-1500服务器内部错误检查 PHP 错误日志
-2503服务维护中等待恢复

鉴权错误(10xxx)

codeHTTP含义排查
10001401appid 不存在检查 appid 是否正确
10002401appkey 错误检查 appkey 是否正确
10003401签名错误检查签名算法(字典序 + MD5)
10004401timestamp 过期检查服务器时间,timestamp 5 分钟有效
10005403应用被禁用联系管理员启用应用
10006403域名未授权um_appdomain 表添加授权域名
10007401IP 不在白名单检查应用 IP 白名单配置

签名错误(10003)最常见的原因是参数排序错误。签名算法:所有参数按 key 字典序升序排列 → 拼接 key1=val1&key2=val2&...&appkey=YOUR_APPKEY → MD5 取小写。

OAuth 错误(40xxx)

codeHTTP含义排查
40101400不支持的登录类型type 参数只能是 wx/alipay/qq/douyin/self
40102400redirect_uri 与配置不符检查回调地址是否与 um_apps.url 一致
40103400state 校验失败state 不匹配,可能 CSRF 攻击
40104400code 无效code 已过期或不存在
40163400code 已被消费同一 code 5 分钟内只能消费一次
40105400第三方平台授权失败检查第三方平台配置(微信/支付宝等)
40106400获取用户信息失败第三方 access_token 失效
40107400social_uid 不存在二次查询的 social_uid 无效

Token 错误(50xxx)

codeHTTP含义排查
50001401token 不存在token 已被删除或从未签发
50002401token 已过期token 默认 7 天有效,需重新登录
50003401token 已被踢下线单设备策略下被新登录踢掉
50004403token IP 不匹配ip_bound 策略,当前 IP 与登录时不符
50005403token scope 不足跨应用调用时 scope 不允许

用户错误(60xxx)

codeHTTP含义排查
60001404用户不存在user_id 或 openid 错误
60002400手机号已注册同一手机号不能重复注册
60003400邮箱已注册同一邮箱不能重复注册
60004400验证码错误检查短信/邮件验证码
60005400验证码已过期验证码 5 分钟有效
60006403账号已被封禁联系管理员解封

RBAC 错误(70xxx)

codeHTTP含义排查
70001403无权限访问检查用户角色权限
70002403角色不存在role_id 错误
70003403权限项不存在perm_code 未注册到 um_perm_registry
70004400不能修改超级管理员超级管理员角色不可删改

限流错误(90xxx)

codeHTTP含义排查
90001429请求过于频繁触发限流,稍后重试
90002429登录失败次数过多同一 IP 5 分钟内失败超 10 次
90003429接口调用超额SaaS 套餐月调用量用尽

签名算法详解

// 1. 收集所有请求参数(除 sign 本身)
$params = [
    'appid' => '1000',
    'type'  => 'wx',
    'timestamp' => '1719500000',
    'state' => 'abc123',
    'redirect_uri' => 'https://your-app.com/callback',
];

// 2. 按 key 字典序升序排列
ksort($params);

// 3. 拼接成 key=val&key=val 格式
$parts = [];
foreach ($params as $k => $v) {
    $parts[] = "$k=$v";
}
$signStr = implode('&', $parts);

// 4. 末尾加上 appkey
$signStr .= '&appkey=' . $appkey;

// 5. MD5 取小写
$sign = md5($signStr);

SDK 会自动处理签名,无需手动实现。仅在无 SDK 的场景(如直接 HTTP 调用)才需手动签名。