1、小程序A开通了云开发,开通了资源共享,小程序B是调用方
2、小程序A里面的云函数getOpenid是官方获取openid的(在小程序A内一切正常获取)
return {
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
};
3、小程序B去调用资源方的getOpenid,可以调用正常,但是控制台返回结果只返回了appid有值,其他2个字段都是空
4、小程序B调用资源方其他的云函数正常
问一下各位大佬如何处理
当然没有。
Openid只会返回A小程序的openid,想返回b小程序的openid,是另外一个FROM_OPENID
云函数里代码要改成:
return{ openid:wxContext.FROM_OPENID||wxContext.OPENID ... }
https://developers.weixin.qq.com/community/develop/article/doc/0006ead115cfe8f9bd007fe7466813
可以看下npm包wx-server-inherit-sdk,里面改造了getWxContext函数,getWxContext().APPID、getWxContext().OPENID 可以直接获取到调用方的appid/openid
能不能贴一下app.js的公用函数代码,还有page.js的调用代码
// 声明新的 cloud 实例
var c1 = new wx.cloud.Cloud({
// 资源方 AppID
resourceAppid: 'xxxxx',
// 资源方环境 ID
resourceEnv: 'xxxxx',
})
// 跨账号调用,必须等待 init 完成
// init 过程中,资源方小程序对应环境下的 cloudbase_auth 函数会被调用,并需返回协议字段(见下)来确认允许访问、并可自定义安全规则
await c1.init()
上面的代码放在公用函数里面
=======================================================
=======================================================
下面的代码,根据新建页面,调用就初始化一下
// 完成后正常使用资源方的已授权的云资源
c1.callFunction({
name: '函数名',
data: {},
})