uni-app 一键登录手机真机调试时云函数报错 获取手机号失败,请稍后重试

uni-app 一键登录手机真机调试时云函数报错 获取手机号失败,请稍后重试

产品分类

uniCloud/腾讯云

示例代码

云函数代码:

'use strict';    
exports.main = async (event, context) => {    
  const res = await uniCloud.getPhoneNumber({    
      appid: 'xxx', // 已将这一块替换成一键登录中添加的应用ID    
      provider: 'univerify',    
      access_token: event.access_token,    
      openid: event.openid    
  })    

  console.log(res); // res里包含手机号    
  return {    
    code: 0,    
    message: '获取手机号成功'    
  }    
}

操作步骤

使用 uniCloud.callFunction 调用上述的云函数代码,就会出现报错。

预期结果

能返回成功。

实际结果

Error: 获取手机号失败,请稍后重试。
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async global.__tempModuleExports.exports.main

bug描述

HBuilder版本4.44,参考 uniApp文档 编写云函数后,使用标准基座进行真机调试时(连接本地云函数),出现报错:Error: 获取手机号失败,请稍后重试。【连接华为手机(HarmonyOS 4.2.0)进行的调试,而且电脑端使用的是手机热点】

官网上有说明:应用开通uni一键登录服务后,需要等审核通过后才能正式使用。在审核期间可以使用HBuilder标准基座真机运行调用一键登录功能,调用时会从你的账户中扣费。

我的应用目前在审核中,也进行了一键登录充值。

开发环境

项目创建方式 HBuilder标准基座
版本号 4.44

更多关于uni-app 一键登录手机真机调试时云函数报错 获取手机号失败,请稍后重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

请加企业微信群 加群方式见“常见问题”下方

更多关于uni-app 一键登录手机真机调试时云函数报错 获取手机号失败,请稍后重试的实战教程也可以访问 https://www.itying.com/category-93-b0.html


针对您提到的uni-app在真机调试时云函数报错,获取手机号失败的问题,这通常与后端云函数的配置、权限设置以及前端调用方式有关。以下是一个基于uni-app和云开发(如阿里云、腾讯云等)的示例代码和配置检查步骤,以帮助您定位和解决问题。由于具体云服务商的API和配置方式可能有所不同,以下示例以腾讯云为例进行说明。

1. 检查云函数配置

确保您的云函数已正确配置并部署到云端。在云函数的index.js中,您应该有一个处理登录请求的函数,例如:

const cloud = require('wx-server-sdk');
cloud.init();

exports.main = async (event, context) => {
  try {
    const wxContext = cloud.getWXContext();
    const phoneNumber = wxContext.OPENID; // 注意:这里OPENID是示例,实际应使用云开发提供的获取手机号API

    // 假设您使用腾讯云的云开发API获取手机号
    const res = await cloud.openapi.security.decryptPhoneNumber({
      encryptedData: event.encryptedData,
      iv: event.iv,
      sessionKey: wxContext.SESSION_KEY, // 确保已正确获取sessionKey
    });

    return {
      success: true,
      phoneNumber: res.phoneNumber,
    };
  } catch (error) {
    console.error(error);
    return {
      success: false,
      message: '获取手机号失败,请稍后重试',
    };
  }
};

2. 前端调用云函数

在您的uni-app前端代码中,确保您正确调用了云函数,并传递了必要的参数(如加密数据、会话密钥等):

uni.cloud.callFunction({
  name: 'yourCloudFunctionName', // 替换为您的云函数名称
  data: {
    encryptedData: this.encryptedData, // 从登录按钮事件中获取
    iv: this.iv, // 从登录按钮事件中获取
  },
  success: (res) => {
    if (res.result.success) {
      console.log('手机号:', res.result.phoneNumber);
    } else {
      uni.showToast({
        title: res.result.message,
        icon: 'none',
      });
    }
  },
  fail: (err) => {
    console.error('调用云函数失败:', err);
  },
});

3. 检查权限和配置

  • 确保您的云函数有权限访问相关的云开发资源。
  • 检查云函数的网络配置,确保没有防火墙或安全组规则阻止请求。
  • 确保前端应用的登录状态正确,能够获取到有效的sessionKey。

通过上述步骤和代码示例,您应该能够定位并解决问题。如果问题仍然存在,建议查看云服务商的官方文档或联系其技术支持获取更详细的帮助。

回到顶部