当从客户端调用云函数时,如在小程序中或者 web 端使用微信登录授权,云函数的传入参数中会被注入用户的 openid,开发者无需校验 openid 的正确性,可以直接使用该 openid。与 openid 一起注入云函数的还有小程序或者对应微信开放(或公众)平台所注册应用的 appid

# 小程序端发起的云函数调用

从小程序端调用云函数时,开发者可以在云函数内使用 wx-server-sdk (opens new window) 提供的 getWXContext (opens new window) 方法获取到每次调用的上下文(appidopenid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。

  1. 您可以写一个云函数进行测试。
// 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
  };
};
  1. 假设云函数命名为 test,上传并部署该云函数后,可在小程序中测试调用。
wx.cloud.callFunction({
  name: "test",
  complete: res => {
    console.log("callFunction test result: ", res);
  }
});
  1. 您会在调试器看到输出的 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();