# 获取用户手机号

! 该功能仅支持企业主体小程序使用

# 步骤1:创建获取手机号按钮

在左侧组件区中选择一个按钮组件,并在右侧配置区高级属性中,微信开放能力选择为获取手机号img

# 步骤2:创建自定义连接器并添加用于解密手机的自定义方法

  1. 创建一个自定义连接器,并为连接器新建一个自定义方法,方法类型选择云函数,随后点击查看详情按钮进行云函数的编辑。

  2. 粘贴云函数解密代码,代码如下:

    const cloud = require('wx-server-sdk'); // 引用 wx-server-sdk 依赖文件
    cloud.init({
      env: cloud.DYNAMIC_CURRENT_ENV,       //进行云能力初始化
    })
    module.exports = async function (params, context) {
        const { cloudId } = params;     //得到前端通过手机号按钮获取到的clouid
        
        
            
            const result = await cloud.getOpenData({    
                    //通过 clouid 调用 getOpenData 方法,获取解密后的手机号数据
                "list": [cloudId]
            })
            return result;
            
    }
    
  3. 设置入参标识为cloudId,出参标识为res,如下图所示: img

  4. 单击保存,保存该连接器即可。

    说明:

    上述云函数中的 wx-server-sdk 依赖文件需要在真实环境中运行才会安装,因此点击方法测试按钮会出现报错提示缺少该依赖文件,属于正常现象。

# 步骤4:创建获取手机号的自定义方法

返回编辑器,进入低码编辑器,创建一个名为 getphonenumber 的自定义方法,自定义方法示例如下:

export default async function ({event, data}) {
    /*由于之前为按钮配置了"获取手机号"的微信能力,因此当点击该按钮触发自定义方法时,event会获取到返回的 cloudID ,通过event.detail.cloudID*/
    console.log(event);
    const objData = await app.cloud.callDataSource(
    { dataSourceName: 'getphonenum_t3i3ptl',  //自定义连接器标识
        methodName: 'method_58e0350156022',  // 自定义连接器方法标识
        params:{cloudId:event.detail.cloudID}});
//调用刚刚在数据源中创建的云函数方法,并将返回值赋给objData
    console.log('objData:', objData);
//打印返回的结果,查看获取到的手机号
    
}

# 步骤5:将按钮与自定义方法进行绑定

选中步骤1中新建的按钮组件,进入右侧配置区的事件页面,进行自定义方法的绑定。 img

# 步骤6:上传小程序并测试

  1. 单击右上角的上传,进行小程序的上传,并联系管理员将此次上传设置为体验版本。 img

  2. 上传完成后进入体验版小程序,开启小程序的调试模式。 img

  3. 在小程序中单击按钮,观察是否调起手机号获取弹窗,若调起成功,单击允许即可。 img

  4. 单击下方 vconsole,查看是否出现手机号码的打印信息,若正常展示,则表示该功能已可以正常使用。

    img