当从客户端调用云函数时,如在小程序中或者 web 端使用微信登录授权,云函数的传入参数中会被注入用户的 openid
,开发者无需校验 openid
的正确性,可以直接使用该 openid
。与 openid
一起注入云函数的还有小程序或者对应微信开放(或公众)平台所注册应用的 appid
。
# 小程序端发起的云函数调用
从小程序端调用云函数时,开发者可以在云函数内使用 wx-server-sdk (opens new window) 提供的 getWXContext (opens new window) 方法获取到每次调用的上下文(appid
、openid
等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid
)。
- 您可以写一个云函数进行测试。
// index.js
const cloud = require("wx-server-sdk");
exports.main = (event, context) => {
// 这里获取到的 openId、 appId 和 unionId 是可信的,注意 unionId 仅在满足 unionId 获取条件时返回
const { OPENID, APPID, UNIONID } = cloud.getWXContext();
return {
OPENID,
APPID,
UNIONID
};
};
- 假设云函数命名为 test,上传并部署该云函数后,可在小程序中测试调用。
wx.cloud.callFunction({
name: "test",
complete: res => {
console.log("callFunction test result: ", res);
}
});
- 您会在调试器看到输出的 res 为如下结构的对象。
{
"APPID": "xxx",
"OPENID": "yyy",
"UNIONID": "zzz" // 仅在满足 unionId 获取条件时返回
}
# Web 端发起的云函数调用
从 Web 端发起云函数调用时,可以使用 CloudBase 官方服务端 SDK ,tcb-admin-node
获取终端用户的身份信息。示例代码如下:
//引用SDK
const tcb = require("tcb-admin-node");
//初始化SDK
tcb.init();
//获取用户信息
const userInfo = await tcb.auth().getUserInfo();