4***@qq.com
4***@qq.com
  • 发布:2026-03-16 15:37
  • 更新:2026-03-16 15:53
  • 阅读:25

app一键登录,获取手机号码,使用云函数解析到了手机号码,但是前端项目中没有收到回调

分类:uniCloud

uniapp 项目:

uniCloud.callFunction({  
                    name: 'getPhone', // 你的云函数名称  
                    data: {  
                        access_token: authResult.access_token, // 客户端一键登录接口返回的access_token  
                        openid: authResult.openid // 客户端一键登录接口返回的openid  
                    }  
                }).then(res => {  
                    console.log('getPhoneNumber res:', res)  
                }).catch(err=>{  
                    // 处理错误  
                    console.log('getPhoneNumber catch:', err)  
                })

云函数getPhone代码:

exports.main = async (event, context) => {  
  //event为客户端上传的参数  
  console.log('event : ', event)  

  // event里包含着客户端提交的参数  
  const res = await uniCloud.getPhoneNumber({  
    appid: '__UNI__BFE53D4', // 替换成自己开通一键登录的应用的DCloud appid  
    provider: 'univerify',  
    access_token: event.access_token,  
    openid: event.openid  
  })  
  console.log('get phone res:', res)  
  // 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端  
  // 如果数据库在uniCloud上,可以直接入库  
  // 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,将手机号通过http方式传递给其他服务器的接口,详见:https://doc.dcloud.net.cn/uniCloud/cf-functions?id=httpclient  

  return {  
      code: 0,  
      statusCode: 200,  
      data: res.phoneNumber,  
  }  
};

调用完云函数时,没有打印出getPhoneNumber res:

2026-03-16 15:37 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

根据你描述的问题,云函数已解析到手机号但前端未收到回调,建议按以下步骤排查:

1. 检查错误捕获

请确认 .catch 分支是否执行并打印了错误信息:

uniCloud.callFunction({  
  name: 'getPhone',  
  data: {  
    access_token: authResult.access_token,  
    openid: authResult.openid  
  }  
}).then(res => {  
  console.log('getPhoneNumber res:', res)  
}).catch(err => {  
  // 务必查看这里的错误输出  
  console.error('云函数调用失败:', err)  
})

2. 确认云函数返回数据的获取方式

uniCloud 云函数返回的数据包裹在 res.result 中,需通过 res.result 获取你返回的 codedata

.then(res => {  
  console.log('完整响应:', res)  
  console.log('业务数据:', res.result) // 这里才是你返回的 {code: 0, data: phoneNumber}  
  if (res.result.code === 0) {  
    console.log('手机号:', res.result.data)  
  }  
})

3. 检查云函数执行日志

登录 uniCloud 控制台,进入对应服务空间的云函数日志,确认:

  • getPhone 云函数是否被成功触发
  • uniCloud.getPhoneNumber 调用是否成功
  • 是否有报错信息导致云函数异常退出

4. 验证云函数部署状态

  • 确认云函数已上传部署到正确的服务空间(开发环境/生产环境)
  • 如果是本地运行云函数,确保前端连接的是本地云函数;如果是云端部署,确保前端调用的是云端云函数

5. 检查一键登录配置

确认 manifest.json 中已正确配置一键登录(univerify)的 AppID,且该应用已在 DCloud 开发者中心 开通一键登录服务。

相关文档参考:一键登录使用指南

如以上步骤仍无法解决,请提供 .catch 中打印

内容为 AI 生成,仅供参考
4***@qq.com

4***@qq.com (作者)

也没走到catch,云函数日志中没有内容,已经扣费,云函数已部署,还有什么其他可能的问题吗,就是进不去回调

4***@qq.com

4***@qq.com (作者)

4***@qq.com

4***@qq.com (作者)

来个人给回复下吧,整一天了,不要ai

要回复问题请先登录注册