我是同一主体下的两个小程序,其中 A 开通了云开发,B 使用 A 共享的环境,现在在 B 中使用按钮获取手机号时,cloudID 传给云函数,报错如下图
云函数报错:
// index.wxml
<t-button wx:if="{{authMobileBtnVisible }}" block="{{true}}" class="" open-type='getPhoneNumber' bindgetphonenumber="getPhoneNumber" theme="primary" size="">
授权手机号码
</t-button>
// index.js
/* 获取手机号 */
getPhoneNumber: async function (params) {
let that = this;
let cloudID = params.detail.cloudID; // 开放数据ID
if (!cloudID) {
console.log('[my][getPhoneNumber] 获取 cloudID 为空', cloudID);
return;
}
app.globalData.cloud.callFunction({
name: 'getphone',
data: {
cloudID: cloudID
}
}).then(async res => {
console.log(res);
}).catch(error => {
console.log('[my][getPhoneNumber] 请求云函数 getphone 失败', error)
})
},
// 云函数 getphone
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const res = await cloud.getOpenData({
list: [event.cloudID]
})
console.log(res);
// 这里获取到的 openId、 appId 和 unionId 是可信的,注意 unionId 仅在满足 unionId 获取条件时返回
let { OPENID, APPID, UNIONID } = cloud.getWXContext()
let phone = res.list[0].data.purePhoneNumber
console.log("OPENID : " + OPENID)
return {
phone,
OPENID
}
}
https://developers.weixin.qq.com/community/develop/article/doc/0006a8ec7ac860c94bf90a34f5d813
用cloudID获取手机号,上面的文章现在还可用。
参考下这个链接:https://developers.weixin.qq.com/community/develop/doc/000c2690378e805e3f9ee016551400?_at=1674523819856
// app.js
// 声明新的 cloud 实例
var cloud = new wx.cloud.Cloud({
appid: that.globalData.appid,
// 资源方 AppID
resourceAppid: that.globalData.resourceAppid,
// 资源方环境 ID
resourceEnv: that.globalData.resourceEnv,
traceUser:true
});