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
};
}
}; - 发布:2025-12-10 12:19
- 更新:2025-12-10 12:24
- 阅读:14
产品分类: uniCloud/App
示例代码:
操作步骤:
如上
如上
预期结果:
能够正确返回手机号码
能够正确返回手机号码
实际结果:
API报错
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
3 个回复
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快速入门。x***@163.com (作者)
云函数package.json
x***@163.com (作者)
常见问题下面的个推。加了微信也没人回复。付费使用还这么难对接?还没通道反馈。如果我遇见生产BUG了。那又怎么处理呢?
要回复问题请先登录或注册
公告
更多>相关问题