x***@163.com
x***@163.com
  • 发布:2025-12-10 12:19
  • 更新:2025-12-10 12:24
  • 阅读:14

【报Bug】云函数号码认证API报错

分类:uniCloud

产品分类: uniCloud/App

示例代码:
exports.main = async (event, context) => {  
  // 1. 从event中提取参数  
  const { accessToken, openId } = JSON.parse(event.body);  

  // 2. 参数校验  
  if (!accessToken || !openId) {  
    return {  
      code: "INVALID_PARAM",  
      message: "缺少必要参数: accessToken 或 openId",  
      data: null  
    };  
  }  

  console.log("入参=====>", accessToken, openId)  

  // 3. 调用 uniCloud.getPhoneNumber 获取手机号  
  try {  
    const res = await uniCloud.getPhoneNumber({  
      provider: "univerify",  
      appid: "__UNI__078FA66",  
      access_token: accessToken,  
      openid: openId  
    });  

    console.log(res)  

    // 4. 处理响应  
    if (res.code === 0) {  
      // 成功获取手机号  
      return {  
        code: 200,  
        message: "success",  
        data: {  
          phoneNumber: res.phoneNumber  
        }  
      };  
    } else {  
      // 运营商返回错误  
      return {  
        code: 500,  
        message: res.message || "手机号获取失败",  
        data: null  
      };  
    }  
  } catch (error) {  
    // 5. 异常处理  
    console.error("uni-verify 云函数执行异常:", error);  
    return {  
      code: 500,  
      message: error.message || "服务器内部错误",  
      data: null  
    };  
  }  
};

操作步骤:

如上

预期结果:

能够正确返回手机号码

实际结果:

API报错

bug描述:

使用的uni-verify来进行号码验证。前端调起认证页面后,获取到access_token和openid之后传给服务端。服务端通过云函数url化。将access_token和openid传入云函数。云函数接收参数正常,调用unicloud.getPhoneNumber时。方法内部报错,提示code码为5000。```txt
请求入参: {
"args": {
"path": "/",
"httpMethod": "POST",
"headers": {
"content-length": "263",
"x5-uuid": "94214047a3c9d0382042da89b61f21f3",
"x-client-ip": "112.193.95.216",
"x-forwarded-for": "112.193.95.216, 47.111.193.88, 39.106.237.251",
"accept": "application/json, application/yaml, application/*+json",
"x-real-ip": "112.193.95.216",
"x-sinfo": "on",
"host": "fc-mp-5c14dd4c-9646-488d-ad5a-f73a05546cc7.next.bspapp.com",
"content-type": "application/json",
"x-forwarded-by": "172.28.211.153:80",
"user-agent": "Java/17.0.5"
},
"queryStringParameters": {},
"isBase64Encoded": false,
"body": "{\"openId\":\"000gtc_c95c30f42568c16d6b2986d75c525a4e65\",\"accessToken\":\"U1RzaWQwMDAwMDAxNzY1MjkzMTU3MTI4MDVDY01NUmZsM1U2UFowMEVVeWVBQTlvVXVIZThsdXd8fDZ8djN8MXw4YTFlYzQ1ZGFlNDI2MmJhM2JmMjRlNDE5MDQ5MmVjM3x8TkQ2YlNQNk4ybjhzOGFtY1JrTnYwVVdxZFRqTFROdWtYSm81aTJhdnZiYz0K\"}"
}
}

[uni-verify/ac1cd3991765293157705132871/14ms/DEBUG] 入参=====>
access_token: U1RzaWQwMDAwMDAxNzY1MjkzMTU3MTI4MDVDY01NUmZsM1U2UFowMEVVeWVBQTlvVXVIZThsdXd8fDZ8djN8MXw4YTFlYzQ1ZGFlNDI2MmJhM2JmMjRlNDE5MDQ5MmVjM3x8TkQ2YlNQNk4ybjhzOGFtY1JrTnYwVVdxZFRqTFROdWtYSm81aTJhdnZiYz0K

openid:
000gtc_c95c30f42568c16d6b2986d75c525a4e65

at b (/tmp/function/@common_modules/uni-cloud-verify/index.js:1:4412)  
at q (/tmp/function/@common_modules/uni-cloud-verify/index.js:1:5298)  
at processTicksAndRejections (node:internal/process/task_queues:96:5)  
at P (/tmp/function/@common_modules/uni-cloud-verify/index.js:1:5467)  
at exports.main (/tmp/function/__index.js:32:17)  
at $e (/tmp/function/index.js:1:85427)  
at Ve (/tmp/function/index.js:1:86544)  
at runUserFunction (/code/index.js:93:265116)  
at (/code/index.js:93:259283) {  

errMsg: '获取手机号失败,请稍后重试。',
errCode: 5000,
code: 5000,
errSubject: 'uni-getPhoneNumber',
forceReturn: false,
cause: undefined
}
请求响应状态: success

2025-12-10 12:19 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

该bug反馈内容基本完整但存在关键缺失:缺少HBuilderX/uni-app版本号、操作系统类型及云函数扩展库配置信息。描述中提供了请求参数、错误日志和代码示例,但复现步骤过于简略(仅"如上"),未说明前端调起认证的具体方式及网络环境(如是否使用流量而非WiFi)。

根据知识库判断bug成立:错误码5000对应"获取手机号失败",核心原因是云函数未正确启用uni-cloud-verify扩展库。自HBuilderX 3.4.0起必须通过package.json引用该扩展库才能调用uniCloud.getPhoneNumber,而用户代码未体现扩展库配置。知识库明确说明:"HBuilderX 3.4.0及之后的版本上传云函数时如果没有指定使用uni-cloud-verify扩展库的云函数将无法调用uniCloud.getPhoneNumber接口"。

解决方案需检查两点:1) 云函数package.json是否包含"uni-cloud-verify": "^x.x.x"依赖;2) 是否通过云函数控制台关联扩展库。注意一键登录要求设备使用移动数据(非WiFi),且双卡手机返回默认数据卡号码。若使用旧版HBuilderX(<3.4.0)则无需扩展库,但建议升级至最新版并参考uniCloud快速入门

内容为 AI 生成,仅供参考
x***@163.com

x***@163.com (作者)

{  
  "name": "uni-verify",  
  "version": "1.0.0",  
  "description": "一键登录手机号获取云函数",  
  "main": "index.js",  
  "extensions": {  
    "uni-cloud-verify": {}  
  },  
  "cloudfunction-config": {  
    "memorySize": 256,  
    "timeout": 10  
  }  
}

云函数package.json

x***@163.com

x***@163.com (作者)

常见问题下面的个推。加了微信也没人回复。付费使用还这么难对接?还没通道反馈。如果我遇见生产BUG了。那又怎么处理呢?

要回复问题请先登录注册