From 81f868a49fa3dd2d02651329032212dd56a3abb7 Mon Sep 17 00:00:00 2001 From: hawklin2017 <32898629+hawklin2017@users.noreply.github.com> Date: Sat, 28 Mar 2026 21:51:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=85=B1=E5=90=8C=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/get_common_group.sh | 54 ++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/scripts/get_common_group.sh b/scripts/get_common_group.sh index bf98e82b9..5936ec612 100755 --- a/scripts/get_common_group.sh +++ b/scripts/get_common_group.sh @@ -3,13 +3,21 @@ set -euo pipefail # ====== 按需修改 ====== API_BASE="${API_BASE:-http://127.0.0.1:10002}" # 你的 open-im-api 地址 -SELF_USER_ID="${SELF_USER_ID:-3932647710}" # 当前登录用户(拿 token 的用户) -#FRIEND_USER_ID="${FRIEND_USER_ID:-4391832441}" # 要查询共同群的好友 -FRIEND_USER_ID="${FRIEND_USER_ID:-9607566286}" # 要查询共同群的好友 +SELF_USER_ID="${SELF_USER_ID:-4642714021}" # 当前登录用户(拿 token 的用户) +#FRIEND_USER_ID="${FRIEND_USER_ID:-1971806090}" # 要查询共同群的好友 +FRIEND_USER_ID="${FRIEND_USER_ID:-3870738564}" # 要查询共同群的好友 PLATFORM_ID="${PLATFORM_ID:-2}" # 1=iOS, 2=Android, 3=Windows... ADMIN_USER_ID="${ADMIN_USER_ID:-imAdmin}" # 管理员账号(用于签发用户 token) ADMIN_SECRET="${ADMIN_SECRET:-openIM123}" # 配置中的 share.secret -DEBUG="${DEBUG:-0}" # DEBUG=1 打印请求/响应明细 +DEBUG="${DEBUG:-1}" # DEBUG=1 打印请求/响应明细 +# RecordNotFoundError(errCode=1004)常见于 get_user_token: +# 服务端会查用户是否存在(user RPC GetDesignateUsers);若 SELF_USER_ID 未注册, +# 返回空列表后 rpcli.firstValue 会包装为 ErrRecordNotFound(errDlt: record not found)。 +# 处理:先注册该用户,或 export SELF_USER_ID=已存在用户,或 export TOKEN=已有用户 token 跳过拉 token。 +# +# HTTP 404 + 响应体 "404 page not found"(Gin):当前连上的 API 进程路由表里没有该路径。 +# 本仓库已注册 POST /group/get_common_groups_with_friend(见 internal/api/router.go)。 +# 处理:用当前代码重新编译/替换镜像并重启 openim-api,或确认 API_BASE 指向的就是带该路由的实例(无错误路径前缀/反代截断)。 # ===================== debug_log() { @@ -86,7 +94,15 @@ fi if [[ -z "${TOKEN}" ]]; then echo "获取用户 token 失败,响应如下:" print_json_safe "${USER_RESP:-}" - echo "提示:请确认 SELF_USER_ID 用户已注册存在,或手动传入 TOKEN 后重试。" + USER_ERR_CODE="$(echo "${USER_RESP:-}" | jq -r '.errCode // empty')" + if [[ "${USER_ERR_CODE}" == "1004" ]]; then + echo "" + echo "【排查】errCode 1004 (RecordNotFoundError):当前请求的 userID 在用户库中不存在。" + echo " - 服务端路径:auth GetUserToken → user GetDesignateUsers → 未命中则空结果 → record not found" + echo " - 请先将 SELF_USER_ID=${SELF_USER_ID} 注册进系统,或改用已存在用户,或: export TOKEN='你的用户token'" + else + echo "提示:请确认 SELF_USER_ID 已注册、ADMIN_SECRET 与部署一致,或手动 export TOKEN 后重试。" + fi exit 1 fi @@ -103,10 +119,28 @@ JSON debug_log "POST ${API_BASE}/group/get_common_groups_with_friend" debug_log "operationID: ${OP_ID}" debug_log "group req body: ${REQ_BODY}" -GROUP_RESP="$(curl -sS -X POST "${API_BASE}/group/get_common_groups_with_friend" \ - -H 'Content-Type: application/json' \ - -H "token: ${TOKEN}" \ - -H "operationID: ${OP_ID}" \ - -d "${REQ_BODY}")" +GROUP_BODY="$(mktemp)" +GROUP_HTTP_CODE="$( + curl -sS -o "${GROUP_BODY}" -w "%{http_code}" -X POST "${API_BASE}/group/get_common_groups_with_friend" \ + -H 'Content-Type: application/json' \ + -H "token: ${TOKEN}" \ + -H "operationID: ${OP_ID}" \ + -d "${REQ_BODY}" +)" +GROUP_RESP="$(cat "${GROUP_BODY}")" +rm -f "${GROUP_BODY}" +debug_log "group HTTP status: ${GROUP_HTTP_CODE}" debug_log "group raw resp: ${GROUP_RESP}" print_json_safe "${GROUP_RESP}" +if [[ "${GROUP_HTTP_CODE}" == "404" ]] || [[ "${GROUP_RESP}" == "404 page not found" ]]; then + echo "" + echo "【排查】HTTP 404:Gin 未匹配到路由,通常表示当前运行的 openim-api 版本过旧,不含 get_common_groups_with_friend。" + echo " - 期望路径: POST ${API_BASE}/group/get_common_groups_with_friend" + echo " - 请用本仓库代码重新构建并重启 API,或核对 API_BASE / 网关是否多删、少拼了路径前缀。" + exit 1 +fi +if [[ "${GROUP_HTTP_CODE}" != "200" ]]; then + echo "" + echo "【提示】HTTP 状态码: ${GROUP_HTTP_CODE}(非 200),请结合响应体与网关/鉴权配置排查。" + exit 1 +fi